如何更好地在.Net Core中注册服务依赖注入

问题描述 投票:0回答:1

我试图了解依赖注入服务注册表的工作方式。我有一个通用存储库,可以对任何表(如GetAll(),GetById())执行数据库操作。另一个将提交给数据库的服务。如Save();提交();

我读过AddTransient, AddScoped and AddSingleton Services Differences?

我的问题是注册通用存储库服务和Db服务的最佳选择是什么,为什么?

services.AddScoped (typeof (IRepository<>), typeof (Repository<>));
services.AddTransient (typeof (IRepository<>), typeof (Repository<>));
services.AddSingleton (typeof (IRepository<>), typeof (Repository<>));
dependency-injection .net-core asp.net-core-2.0
1个回答
0
投票

使用AddScoped。范围服务是按范围创建的。在Web应用程序中,每个Web请求都会创建一个新的单独的服务范围。这意味着通常会根据Web请求创建范围服务。

如果在同一请求中多次调用db,则使用作用域生存期将有助于将同一存储库对象保留在内存中,并在同一Http Request上下文中多次重用该对象。如果使用瞬态,它将多次创建一个新的存储库对象,并占用更多内存。

© www.soinside.com 2019 - 2024. All rights reserved.