ste*_*776 5 .net c# ninject entity-framework-4.1
使用此示例项目作为指导,我正在设置一个新项目.我的项目将遵循相同的基本架构,除了mvc项目之外,我还将有一个wcf web服务项目(或者可能是servicestack.net)
我使用的是Ninject,而不是像样本中那样使用Unity for DI.目前我正在按如下方式配置Ninject,以便仅为每个Web请求实例化一个数据库工厂实例(因此每个请求一个datacontext类(首先使用EF 4.1代码btw))
kernel.Bind<IDatabaseFactory>()
.To<DatabaseFactory>()
.InScope(ctx => HttpContext.Current);
Run Code Online (Sandbox Code Playgroud)
我很好奇这种方法是否足够?或者让工厂类处理每个http请求的datacontext实例化会更好(如果我将来为非基于Web的前端设计,可能还需要每个线程)?如果是这样,那么有什么例子可以解决这个问题吗?
或者有一个更好的解决方案来处理这个?
您应该使用.InRequestScope()而不是.InScope(ctx => HttpContext.Current). 它确保根据实例是通过 WCF 还是通过 ASP.NET MVC 请求来使用适当的范围。不幸的是,要充分利用这一点,您必须使用http://teamcity.codebetter.com中当前的持续集成构建。也可以看看
https://github.com/ninject/ninject.extensions.wcf
https://github.com/ninject/ninject.web.mvc