使用GraphDiff

时间:2018-11-14 14:22:49

标签: c# entity-framework automapper graphdiff

我在保存一些数据时遇到了GraphDiff的问题,我只需要一个就可以确认。

我将举例说明发生的事情:

首先,我正在使用VS2017(最新版本)EF 6,Automapper和GraphDiff。

我有一个包含以下数据的表。

Table Data

如您所见,其中列出了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());

但是没有用。

我发现以下暗示它无法完成的事情。

Research

1 个答案:

答案 0 :(得分:0)

感谢所有关注此问题的人,但看起来这可能会导致GraphDiff问题,因此我已针对此更新更改了代码,以使用更传统的Linq to Entites解决方案。