我有一個MVC4 web項目,並使用Castle Windsor作爲我的DI容器。另外,我正在使用實體框架來訪問SQL數據庫。我想將我的生活方式設置爲PerWebRequest,但是,當我這樣做時,出現以下錯誤:「操作無法完成,因爲DbContext已被處置」。依賴注入 - EF庫快速調用方法
如果我使用瞬態生活方式,錯誤被忽略了,但它引入了一組新的問題與實體框架。我如何保持PerWebRequest的生活方式,但在調用dispose方法時是否正確?
我正在使用構造函數注入來傳遞我的存儲庫連接字符串來構建新的上下文。我也執行IDisposable。見下:
public class MySqlRepository : MyRepository, IDisposable
{
private readonly DbContext _context;
public MySqlRepository(string connectionString)
{
_context = new DbContext(connectionString);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
_context.Dispose();
}
}
public void Dispose()
{
Dispose(true);
}
}
該代碼似乎是正確的。您確定使用SqlRepository的組件也具有PerWebReuquest或更短的生活方式嗎? – Marwijn