0

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

例如,如果我这样做:

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

然后我做:

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

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

有人知道如何防止这种情况吗?谢谢。

4

1 回答 1

0

继我的评论之后......工作单元本质上将所有内容组合在一起作为一个包或事务。在您的示例中,如果您想保持操作相互隔离和无知,那么您将需要两个不同的工作单元。

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

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

于 2013-05-28T11:23:44.873 回答