我是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() {
}
在需要連接每個單獨的方法,如果該方法調用其他人會需要它,它會通過分貝爲一個參數給他們。這就是我在Linq-to-SQL存在之前用連接對象完成的所有事情。
另一件令我不安的事情是NorthWindEntities實現了IDisposable,按照慣例我應該把它稱爲Dispose()方法,而我不是。
您對此有何看法?
實體對象的實例是否正確?是否應該通過打開和關閉每個查詢來處理它的連接?
或者我應該使用using()子句顯式地處理它?
謝謝!
好的,這是有道理的。 現在,問題是... 我做錯了嗎? 我真的需要處理實體對象嗎? 如果我不?我會「泄漏」到SQL Server的連接嗎? – 2009-09-09 19:57:14
ObjectContext.Dispose不會做太多工作(請參閱Reflector)。但有理由認爲可以改變,你應該*處置它。 – 2009-09-09 20:30:24