我有一个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