很抱歉,如果之前已经回答过这个问题,我想知道使用EF Core 2.0处理MVC 6连接的最佳方法是什么。我应该使用DBContext的单例实例(Servics.AddSingleton)还是更好的方法来处理它。如果有多个DBContext实例,我将最终让我的实体进入断开状态。那怎么处理那种情况呢?
答案 0 :(得分:2)
首先,它有点像宠儿,但没有MVC 6这样的东西。有ASP.NET MVC和ASP.NET Core,其中MVC是在完整.NET上运行的旧框架,而Core是在.NET Core上运行的新框架。
正如@DavidG指出的那样,你应该从不在单例范围内拥有一个上下文。您的上下文应始终位于请求范围内,或者ASP.NET Core的DI容器只是称为“Scoped”。这将确保每个请求只有一个上下文实例,这正是您想要的。其他请求将拥有自己的实例这一事实应该不是问题,除非你做的是跨越请求边界的讨厌的非线程安全的东西(你不应该这样做)。
最后,拥有分离的实体本身并不是问题。当你需要用它们做原子时,你只需要附加它们。