【发布时间】:2012-04-26 22:57:42
【问题描述】:
在我的 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 的接口(据我所知),这真的有助于可测试性吗?。
有没有更好的方法?谢谢
【问题讨论】:
标签: entity-framework dependency-injection inversion-of-control