ASP.Net核心MVC:基类型的依赖注入

时间:2017-02-28 17:26:51

标签: asp.net-core asp.net-core-mvc

在转移到ASP.Net Core之前,我使用了Bind<DbContext>().To<MyActualDbContext>(); ,它允许我以通用方式注入我的实体框架数据库上下文。例如:

AddDbContext

在ASP.Net Core MVC中,当使用AddDbContext<MyActualDbContext>(x=> x.UseSqlServer("...")); --- public class TestController: Controller { public DbContext Db {get; private set;} public TestController(DbContext Db){ this.Db = Db; } } 时,如果我执行以下操作,则会导致服务无法解析。

AddSingleton

我知道我可以使用AddScopedAddDbContext来解决此问题,但是,由于AddDbContext是专门用于处理EF数据上下文的,因此{&1} ; d想知道是否有任何方法可以使用该方法实现这一目标。

如果AddSingletone不支持此行为,哪种替代方法更好AddScopedAddScoped?我知道{{1}}每个请求实例化一次服务,但我想知道Singleton是否会导致任何潜在的问题。我想确保在ED DbContext的情况下使用这两种方法不会有任何可能的缺点。

1 个答案:

答案 0 :(得分:2)

您可以使用

{{1}}

但老实说,我没有看到这样做有什么好处,因为基类不会有任何DbSets所以你不能使用它而不将其转换为原始代码,但这种方式有点节拍完全拥有IoC的想法。

是的,单身DbContext是有问题的。它可能导致内存泄漏(跟踪缓存将继续增长),如果将其部署在某处,DI系统将始终返回单例上下文的已处理实例。

相关问题