【发布时间】:2018-11-14 14:22:49
【问题描述】:
我在保存一些数据时遇到了 GraphDiff 的问题,我只需要有人来确认这是否可行。
我将提供一个例子来说明发生了什么:
首先,我使用的是 VS2017(最新版本)EF 6、Automapper 和 GraphDiff。
我有一个包含以下数据的表。
如您所见,这列出了 ParcelId 为 5023 的数据,唯一的区别是 IsAcquired 和 IsCurrent 标志。
我不会进入将 IsCurrent 标志设置为 true 的数据更新的代码,因为它非常复杂,但本质上,一个屏幕允许用户输入值,在保存时设置第二个列表中的记录IsCurrent 为 False 并插入三个具有新值且 IsCurrent 设置为 True 的新记录。这使我们能够撤消这些记录。
现在,我有一个不同的屏幕可以让您编辑主要数据,或者换句话说,来自第一个网格的数据。
这是使用 GrphDiff 更新数据。此编辑不会恢复第二个网格中的数据,但在保存 GraphDiff 操作时会发现数据不同并被覆盖。
dbContext.UpdateGraph(a,map=>map.OwnedCollection(x => x.ParcelRight);
我需要它来忽略 IsCurrent 等于 true 的记录,并且只更新 IsAcquired = true 的记录。
我试过了:
dbContext.UpdateGraph(a,map=>map.OwnedCollection(x => x.ParcelRight
.Where(r => r.IsAcquired == true).ToList());
但它不起作用。
我发现以下这意味着它无法完成。
【问题讨论】:
标签: c# entity-framework automapper graphdiff