簡體   English   中英

EF6:使用外鍵關系修改實體屬性 - 我是否需要更改Id或相關對象或兩者?

[英]EF6: Modifying an entity property with a foreign key relation - Do I need to change the Id or the related object or both?

我通過修改Id來修改代碼中實體的外鍵屬性:

ElementData.ServiceLevelId = parameter.ServiceLevelId;

在持久化之后,我發現當相應的導航屬性ServiceLevel意外為null時,這只能按預期工作。 如果它仍然保留“舊”對象,則更改將不會命中數據庫。

這意味着,我需要這樣做

ElementData.ServiceLevelId = parameter.ServiceLevelId;
ElementData.ServiceLevel = null; //Force the update to the Database

這是否意味着,更改對象比僅更改ID更“強”? 在這種情況下,我是否應始終將相關對象設置為null?

更新(根據Tim Copenhaver的評論) :有問題的實體是現有實體的副本(帶有上述修改)。 它使用Automapper進行復制,並映射除主鍵和一個不相關屬性之外的所有內容。 Automapper創建淺拷貝AFAIK。 因此,副本的情況將是更新的Id和未觸摸的對象引用在將其添加到上下文時不匹配。 我猜,EF然后決定“對象引用更強”。

只要數據映射正確,更改任一屬性都將起作用。 EF非常聰明,可以看到哪些屬性發生了變化而忽略了另一個屬性。 但是你必須要小心 - 如果ElementData.ServiceLevel.Id不等於ElementData.ServiceLevelId,你會得到一些模糊的錯誤。

如果您在保存時遇到問題,則映射層可能不正確。 如果您可以發布ElementData類的映射以及更多關於如何進行保存的代碼,我們可以幫助您進行故障排除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM