[英]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.