C# 对不同对象的两个不同查询,结果相同

C# 对不同对象的两个不同查询,结果相同,c#,linq,include,instance,unit-of-work,C#,Linq,Include,Instance,Unit Of Work,我使用的是UoW,所以我认为问题在于这两个查询具有相同的上下文 例如,如果我这样做: IEnumerable listProjects = ((IQueryableUnitOfWork)UnitOfWork) .CreateSet<Project>().Include(p=>p.Users).AsEnumerable(); IEnumerable listProjects=((IQueryableUnitOfWork)UnitOfWork) .CreateSet().Incl

我使用的是UoW,所以我认为问题在于这两个查询具有相同的上下文

例如,如果我这样做:

IEnumerable listProjects = ((IQueryableUnitOfWork)UnitOfWork)
.CreateSet<Project>().Include(p=>p.Users).AsEnumerable();
IEnumerable listProjects=((IQueryableUnitOfWork)UnitOfWork)
.CreateSet().Include(p=>p.Users).AsEnumerable();
然后我会:

IEnumerable listProjectsWithoutIncludes = ((IQueryableUnitOfWork)UnitOfWork)
.CreateSet<Project>().AsEnumerable();
IEnumerable listProjectsWithoutIncludes=((IQueryableUnitOfWork)UnitOfWork)
.CreateSet().AsEnumerable();
在objectlistProjectsWithoutIncludes中存储项目的用户,就像我使用includes进行查询一样


有人知道如何预防吗?谢谢。

下面是我的评论。。。就其本质而言,将所有事物都作为一个包或事务组合在一起。在你的例子中,如果你想保持动作的孤立和相互不了解,那么你需要两个不同的工作单元

将一个工作单元视为一个事务,因此,如果您有5块石头,拿走了2块,那么在事务期间,您每次都会有3块石头。然而,如果你有一个不同的工作单元,它总是会看到5块石头(直到提交等),因为它不是firsts交易的一部分


我希望这有意义?工作单位=事务=工作组。如果在一个事务中同时执行这些操作没有意义,则创建一个新的工作单元,依此类推。

如果是同一工作单元,则该工作单元按预期工作。如果你想让它们被隔离,那么你会使用不同的工作单元吗?UoW的整个概念是将动作分组在一起以形成一个工作单元。如果它们是不能相互作用的单独项目,那么它们就不是工作单元的一部分?谢谢Belogix,我不知道工作单元是这样工作的。