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

本文关键字:对象 结果 查询 两个 | 更新日期: 2023-09-27 18:15:36

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

例如:

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

,然后我做:

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

在对象listProjectsWithoutIncludes中存储了项目的用户,就像我使用include进行查询一样。

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

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

继续我的评论…工作单元的本质是将所有东西作为包或事务组合在一起。在你的例子中,如果你想保持动作的隔离并且彼此不知道,那么你将需要两个不同的工作单元。

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

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