【发布时间】:2012-04-23 04:01:57
【问题描述】:
我已经使用带有 ninject 注入的实体和存储库模式构建了我的站点。我的问题是我的连接似乎没有得到处理。我有大约 30 个存储库(每个表一个),并且我很快就获得了 sql expire timout preety。我不能使用常规的 using 语句,因为代码只识别注入前的接口。 (在每个控制器中,我都有通过 ninject 注入的存储库接口实例)。
我已经搜索了网络,但找不到对我来说准确的解决方案。 谁能帮帮我吗? 代码示例:
这是在 addBindings() 下的 ninject 控制器中:
ninjectKernel.Bind<IMovieRepository>().To<MovieRepository>().InRequestScope();
还有我的一个仓库:
public class MovieRepository : IMovieRepository, IDisposable
{
private Entities dataContext = new Entities();
public System.Data.Entity.DbContext DbContext
{
get { return dataContext ?? (dataContext = new Entities()); }
}
public void Dispose() { dataContext.Dispose(); }
}
在 Global.asax 文件中:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory() as IControllerFactory);
【问题讨论】:
-
您能否展示您的 Ninject 绑定和您的存储库类之一的示例?我对如何管理 DbContext 的生命周期很感兴趣。
-
你在哪里做的?在 Global.asax 中?你一开始是如何设置 Ninject 的?如果可以的话,也许可以用这段代码更新你的问题。
-
@ngm:这是在 addBindings 下的 ninject 控制器中:ninjectKernel.Bind
().To ().InRequestScope();和我的存储库之一: public class MovieRepository : IMovieRepository, IDisposable { private Entities dataContext = new Entities();公共 System.Data.Entity.DbContext DbContext { 获取 { 返回 dataContext ?? (dataContext = 新实体()); } } public void Dispose() { dataContext.Dispose(); } }
标签: entity-framework-4.1 ninject repository-pattern dispose connection