我在保存一些数据时遇到了 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());
但它没有用。
我发现以下内容暗示它无法完成。