繁体   English   中英

使用GraphDiff的条件映射

[英]Conditional mapping using GraphDiff

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

但它没有用。

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

研究

多亏了所有这些内容,但看起来这可能导致GraphDiff问题,因此我已更改此更新的代码,以使用更传统的Linq to Entites解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM