我想知道如何在下列情況下正確處理對象。這是一個ASP.NET MVC控制器操作。有一個實現IDisposable的倉庫。附件實體包含相關的實體任務。當我點擊附件詳細信息時,它顯示正確。但是當我點擊這個任務時,下面的異常拋出:「ObjectContext實例已經被處置...」。我明白,當視圖呈現時,它被放置並且ObjectContext被關閉。如何正確處理對象(ASP.NET MVC +實體框架)
public ActionResult Detail(Guid id)
{
Attachment attachment = null;
using (var attachmentRepository = IoC.Resolve<AttachmentRepository>())
{
attachment = attachmentRepository.SelectByKey(id);
return View("Detail", attachment);
}
}
我的問題是什麼是最好的做法在這種情況下?
這是一個很好的解決方案嗎?什麼時候將ObjectContext置於這種情況下?當用戶轉到另一個視圖?或者當垃圾收集器將被執行?
public ActionResult Detail(Guid id)
{
Attachment attachment = null;
var attachmentRepository = IoC.Resolve<AttachmentRepository>();
attachment = attachmentRepository.SelectByKey(id);
return View("Detail", attachment);
}
感謝
由於__BrokenGlass__說你應該使用'Include'來加載實體,我猜想一個ViewModel會更好地將你的數據傳遞給View。這裏有一些很好的理由說明爲什麼你不應該在視圖中延遲加載你的數據:http://nhprof.com/learn/alerts/QueriesFromViews – Andreas 2012-02-03 15:51:37