【问题标题】:Conditional mapping using GraphDiff使用 GraphDiff 的条件映射
【发布时间】:2018-11-14 14:22:49
【问题描述】:

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

但它不起作用。

我发现以下这意味着它无法完成。

Research

【问题讨论】:

    标签: c# entity-framework automapper graphdiff


    【解决方案1】:

    感谢所有关注此问题的人,但它似乎是导致 GraphDiff 问题的原因,因此我已更改此更新的代码以使用更传统的 Linq to Entites 解决方案。

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 2020-01-27
      • 2021-09-17
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      相关资源
      最近更新 更多