0
我正在寫MVC Web應用程序,並且我已經在一個點上陷入困境。MVC應用程序拋出ObjectDisposedException事件雖然我使用了ToList()方法
應用程序拋出ObjectDisposedException事件雖然我使用ToList()方法,而dbContext仍然打開。這裏是我的代碼:
數據訪問層:
public List<CompanyCode> SearchCompanyCodes(int? projectId=null)
{
IQueryable<sl_CompanyCodes> filtered=dbContext.sl_CompanyCodes;
if(projectId!=null)
{
filtered = filtered.Where(cc => cc.Project_ID == projectId);
}
return filtered.ToList();
}
經營業務邏輯層:
public List<CompanyCode> CompanyCodes(int? cc_projectId=null)
{
List<CompanyCode> result;
using(var repository=new E6Repository())
{
result=repository.SearchCompanyCodes(projectId:cc_projectId);
}
// E6Repository.Dispose calls dbContext.Dispose()
return result;
}
控制器:
public JsonResult CompanyCodes()
{
var logic = new GetDataLogic();
List<CompanyCode> l = logic.CompanyCodes();
return Json(l, JsonRequestBehavior.AllowGet);
}
我不知道該怎麼辦...當我在控制器返回操作之前停止調試器時,當我在即時窗口中輸入l時,我可以看到填充良好的列表(注意:這一點dbContext
已經配置)。有趣的是:如果我將ActionResult作爲模型更改爲IEnumerable<CompanyCode>
,響應很好,並且沒有錯誤。
任何人都可以解釋我發生了什麼事嗎?
什麼不顯示是如何控制器邏輯工作。通過更改爲強類型,您可以要求MVC Binder提供強大的類型。所以這是一個活頁夾,它使用活頁夾知道的值來創建類型。這是第一次獲得還是發佈? –
請顯示CompanyCode及其映射的代碼。這可能是一個懶加載問題。 – jbl