对不同对象的两种不同查询,结果相同

问题描述:

我使用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,我不知道工作单元是如何工作的。 –

继续从我的评论... Unit Of Work由其本质团体一起作为一个包或交易一起。在你的例子中,如果你想保持孤立和无知的行动,那么你需要两个不同的工作单位。

想象一个单位的工作单一交易,所以如果你有5个宝石,并拿走了2个,那么你将有3个每个在此之后这个交易。然而,如果你有不同的工作单位,它总是会看到5块石头(直到承诺等),因为它不是第一笔交易的一部分。

我希望有道理吗?工作单位=交易=工作组。如果这些行为没有意义在一起交易*同完成,那么就创建一个新的工作单元,等等。