我在保存一些数据时遇到了GraphDiff的问题,我只需要有人来确认这是否可能。
我将提供一个正在进行的示例:
首先,我使用的是VS2017 (最新版本)EF6,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());但它并没有起作用。
我发现以下几点暗示着这是不可能的。
发布于 2018-11-16 16:40:07
感谢所有看过这个的人,但看起来它是导致GraphDiff问题的原因,所以我更改了这次更新的代码,使用更传统的Linq to Entites解决方案。
https://stackoverflow.com/questions/53302406
复制相似问题