【发布时间】:2017-03-05 01:42:57
【问题描述】:
我阅读了很多关于类似主题的帖子。我有一个零件库
public class EFPartRepository : IPartRepository
{
private ItemDBEntities dbContext = null;
public EFPartRepository(ItemDBEntities dbContext)
{
this.dbContext = dbContext;
}
}
我将使用另一个名为图像存储库的存储库
public class EFUploadedImageRepository : IUploadedImageRepository
{
private ItemDBEntities dbContext = null;
public EFUploadedImageRepository(ItemDBEntities dbContext)
{
this.dbContext = dbContext;
}
}
由于它们将在同一个请求中使用,我希望它们在请求期间共享一个单例的 dbContext,因此不会出现任何异常“一个实体对象不能被多个 IEntityChangeTracker 实例引用”
这是我原来的 Ninject 注册码。
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IPartRepository>().To<EFPartRepository>();
kernel.Bind<IUploadedImageRepository>().To<EFUploadedImageRepository>();
}
所以我的问题是,初始化这个单例的最佳位置在哪里,以便全球不同的存储库轻松使用它?以及如何申报? (最坏的情况是每次调用时总是将 dbContext 作为参数传递)。
谢谢!
【问题讨论】:
标签: asp.net-mvc repository ninject