【发布时间】:2009-09-09 18:36:08
【问题描述】:
我是 Entity Framework 和 ASP.Net MVC 的新手,主要从教程中学习,对任何一个都没有深入了解。 (我确实有 .Net 2.0、ADO.Net 和 WebForms 方面的经验)
我目前的疑问来自我实例化我的实体对象的方式。
基本上我在我的控制器中这样做:
public class PostsController : Controller {
private NorthWindEntities db = new NorthWindEntities();
public ActionResult Index() {
// Use the db object here, never explicitly Close/Dispose it
}
}
我之所以这样做,是因为我在一些 MSDN 博客中发现它对我来说似乎足够权威,我认为这是一种正确的方法。
但是,我对此感到非常不安。虽然它为我节省了很多代码,但我已经习惯了:
using (NorthWindEntities db = new NorthWindEntities() {
}
在每个需要连接的方法中,如果该方法调用其他需要它的方法,它会将 db 作为参数传递给它们。这就是在 Linq-to-SQL 存在之前我对连接对象所做的一切。
让我感到不安的另一件事是 NorthWindEntities 实现了 IDisposable,按照惯例,这意味着我应该将其称为 Dispose() 方法,而我没有。
您对此有何看法?
像我一样实例化实体对象是否正确?它是否应该通过为每个查询打开和关闭它们来处理其连接?
或者我应该使用 using() 子句显式处理它?
谢谢!
【问题讨论】:
标签: entity-framework dispose connection