我正在使用带有DI(Ninject)的通用存储库模式的ASP.NET MVC3和Entity Framework。
我有一个其他网站连接到它的主项目。主项目有自己的域存储库,它连接到数据库中的常规表。连接到它的每个站点也有它自己的域存储库,它连接到它自己的数据库表。我的问题是,当我尝试执行将站点表与主项目表组合在一起的复杂linq查询时,代码不会喊出他不能在同一查询中使用两个不同的dbcontext。所以我必须划分我的查询并从一个存储库表(ToList())中提取数据,然后才能在其他存储库表中使用它。从我看的地方我不能对两个存储库使用相同的DbContext,因为主项目是作为站点项目的Dll。
答案 0 :(得分:2)
你自己给出了答案。您不能对单个查询使用多个DbContext
实例(当您考虑它时这是非常明显的)。而是在单个Web请求中为所有存储库使用单个实例。 Ninject有Per Web Request lifestyle。