【发布时间】:2011-06-19 17:03:46
【问题描述】:
我遇到了多个上下文的问题,出现的主要解决方案是在存储库之间共享上下文,但是我还没有找到一个很好的例子来说明如何做到这一点。
作为参考,我正在使用 MVC Web 应用程序连接到我的数据层。我希望每个用户请求都有一个上下文(假设这是正确的)。
谢谢,
编辑 -
这是我在 BrokenGlass 链接和以下SO Question 的帮助下的解决方案:
我基本上实现了工作单元模式和依赖注入。我应该提到除了使用 MVC 之外,我还在使用 Ninject。
在给定的存储库构造函数中(有关工作单元模式的详细信息,请参阅下面的链接):
public class PersonRepository : IPersonRepository
{
private readonly MyContext _context;
public PersonRepository(IUnitOfWork unitOfWork)
{
if (unitOfWork == null)
throw new ArgumentNullException("unitOfWork");
_context = unitOfWork as MyContext;
}
//...
}
在我的 MVC 应用程序中的 NinjectMVC3 类中(键是 InRequestScope() 方法):
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IUnitOfWork>().To<MyContext>().InRequestScope();
kernel.Bind<IPersonRepository>().To<PersonRepository>();
//...
}
【问题讨论】:
标签: asp.net-mvc entity-framework ninject entity-framework-4.1 ef-code-first