簡體   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