在我的 MVC 控制器中,我使用的是 IoC 容器(Ninject),但不确定如何最好地使用实体框架 ObjectContext。
目前,我正在做类似的事情:
using(var context = new MyObjectContext())
{
var stuff = m_repository.GetStuff(context);
}
从尽可能短的时间内保持数据库连接打开的角度来看,这是最好的管理方式。
如果我要根据每个请求通过 Ninject 创建 ObjectContext,这显然会使数据库连接打开太久。
上面的代码也会变成......
var stuff = m_repository.GetStuff(m_myObjectContext);
(我什么时候处理上下文......?)
我应该为 ObjectContext 创建一个工厂并通过 DI 传递它吗?这会放松耦合,但是如果没有简单的方法来维护 ObjectContext 的接口(我知道),这真的有助于可测试性吗?
有没有更好的办法?谢谢