0

我在保存一些数据时遇到了 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());

但它没有用。

我发现以下内容暗示它无法完成。

研究

4

1 回答 1

0

感谢所有看到这个的人,但它看起来是导致 GraphDiff 问题的原因,所以我已经更改了我的代码以使用更传统的 Linq to Entites 解决方案。

于 2018-11-16T08:40:07.383 回答