我閱讀了一些關於類似主題的文章。我有一個部分倉庫使用Ninject跨資料庫共享Singleton dbContext
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作爲參數)。
謝謝!
非常感謝!我會試一試。也許我應該有一個dbContext容器,並將其作爲一個單例,由所有存儲庫共享。該容器最初將dbConext設置爲null。當請求到達時,控制器構造函數將獲得一個存儲庫,並創建dbContext,以便所有存儲庫都可以訪問它,因爲容器是共享的。一旦請求結束,它就會被銷燬。 – Chris
@Chris正確。 – zaitsman