在 MVC 5 中,脚手架代码将具有以下内容:
public class MyController : Controller
{
private MyContext db = new MyContext();
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
否则,我需要
using (var db = new MyContext())
{...}
在每个 Action 中。
代码看起来不错,所以我不需要在每个操作中使用 using 。但是,这是否受程序员的偏好影响,或者这种风格比在每个需要使用 dbcontext 的操作中使用有一些优势?
最佳答案
两种解决方案都很好 - 两种解决方案都会处理数据库上下文。但在我看来,第二个选项会更好 - 您在需要的地方创建数据库上下文。
但是如果另一个类(某些服务类)也使用数据库上下文怎么办?为整个 Web 请求使用一个数据库上下文是一种很好的做法。在这种情况下,您应该将先前创建的数据库上下文传递给使用数据库上下文的所有类,以防止在所有类中创建新的数据库上下文。所以我会考虑使用IoC容器。 IoC 容器将解决您的依赖关系,还将管理对象的生命周期。波纹管
我列出了一些 IoC 容器:
关于asp.net-mvc - 在MVC Controller 中处置DbContext,哪种方式 "better"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26708517/