我在保存一些数据时遇到了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());
但是没有用。
我发现以下暗示它无法完成的事情。
答案 0 :(得分:0)
感谢所有关注此问题的人,但看起来这可能会导致GraphDiff问题,因此我已针对此更新更改了代码,以使用更传统的Linq to Entites解决方案。