2013-05-28 150 views
0

我使用UoW,所以我認爲問題在於兩個查詢具有相同的上下文。對不同對象的兩種不同查詢,結果相同

例如,如果我這樣做:

IEnumerable listProjects = ((IQueryableUnitOfWork)UnitOfWork) 
.CreateSet<Project>().Include(p=>p.Users).AsEnumerable(); 

,然後我做的:

IEnumerable listProjectsWithoutIncludes = ((IQueryableUnitOfWork)UnitOfWork) 
.CreateSet<Project>().AsEnumerable(); 

在對象listProjectsWithoutIncludes該項目的用戶存儲,因爲如果我這樣做的查詢與包括。

有人知道如何預防嗎?謝謝。

+3

如果它是相同的工作單位,那麼這是按預期工作。如果你想讓他們孤立,那麼你會使用不同的工作單位? UoW的整個概念是你將行動分組在一起形成一個工作單元。如果他們是不能互動的單獨項目,那麼他們不是工作單元的一部分? – Belogix

+0

感謝Belogix,我不知道工作單元是如何工作的。 –

回答

0

繼續從我的評論... Unit Of Work由其本質團體一起作爲一個包或交易一起。在你的例子中,如果你想保持孤立和無知的行動,那麼你需要兩個不同的工作單位。

想象一個單位的工作單一交易,所以如果你有5個寶石,並拿走了2個,那麼你將有3個每個在此之後這個交易。然而,如果你有不同的工作單位,它總是會看到5塊石頭(直到承諾等),因爲它不是第一筆交易的一部分。

我希望有道理嗎?工作單位=交易=工作組。如果這些行爲沒有意義在一起交易中共同完成,那麼就創建一個新的工作單元,等等。

相關問題