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

时间:2013-05-28 11:12:27

标签: c# linq include instance unit-of-work

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

例如,如果我这样做:

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

然后我做:

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

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

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

1 个答案:

答案 0 :(得分:0)

继续我的评论...... Unit Of Work本质上将所有内容组合在一起作为一个包或交易。在你的例子中,如果你想让行动孤立无知,那么你需要两个不同的工作单元。

将一个工作单元视为单个交易,因此如果您有5个石头并且需要2个,那么在 THAT 交易期间,您将每次有3个并且每次都有3个。但是,如果你有一个不同的工作单位,它总会看到5个石头(直到承诺等),因为它不是第一次交易的一部分。

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