我在我的項目(Web應用程序)中使用Autofac的DI。我有一個LINQ表達它連接在同一個數據庫這樣的2個不同的表(所有的()是剛剛超過dbSet.AsQueryable包裝())使用Autofac的InstancePerRequest的不同上下文
from repo1 in repository1.All()
join repo2 in repository2.All()
on repo1.SomeField = repo2.SomeField
.....
我在註冊我的部件(repo1和repo2)具有InstancePerRequest()的容器生成器。
當我執行我的代碼時,在LINQ代碼中,它會引發以下錯誤:「指定的LINQ表達式包含對與不同上下文關聯的查詢的引用。
我認爲dbContext是通過InstancePerRequest()註冊的組件共享的(每個請求)。
想法?
謝謝!
你的dbContext是如何創建的?它是否也通過autofac註冊?如果是這樣,它是如何登記的? –
當你說它是一個Web應用程序時,你是什麼意思?這是WebApi,WCF,MVC還是其他?你是否在你的應用程序類型中使用了適當的autofac集成庫? –
您不顯示您的「存儲庫」構造函數。如果你希望它能夠正常工作,你需要用'PerRequest'註冊你的'DbContext',並讓你的「倉庫」把它注入爲構造函數參數。那麼它就會工作。 –