簡體   English   中英

實體框架4 - 如何更新對象

[英]Entity Framework 4 - How to Update an Object

net 4和c#。

我有一個Object(myContentObj)和一個導航屬性(CmsGroupsTypes)。

我需要更新特定對象的導航屬性。

目前我使用下面的代碼刪除當前關聯並添加一個新關聯,因此我可以更新導航屬性。

雖然我的代碼有效,但我想知道你是否知道更好的方法...我不確定在EF4中是否存在UPDATE方法或類似方法。

謝謝你的幫助!

            // Remove object
            myContentObj.CmsGroupsTypes.Remove(myCurrentGroupTypeObj);
            // Update object
            myContentObj.CmsGroupsTypes.Add(myNewGroupTypeObj);
            context.SaveChanges();

Context跟蹤你的對象,只是從上下文中獲取它,更改它的數據和Context.SaveChanges()

這是正確的方法。 您正在修改導航屬性=您正在修改實體之間的關系。 要刪除實體之間的關系,您必須從導航屬性中刪除相關實體。 要添加實體之間的關系,必須將相關實體添加到導航屬性。

唯一的問題可能是,如果使用存在於DB中的實體調用Add ,但它未從數據庫(虛擬對象或分離實體)加載。 在這種情況下,EF將嘗試再次將您的實體插入數據庫。 為避免這種情況,您必須使用附加實體(從DB加載)或將其狀態設置為Unchanged

其他方式是使用外部關聯,其中從屬實體也提供外鍵屬性。 您可以通過將此屬性設置為父級的id來更改關系。 這僅適用於一對一和一對多關系。

請注意,從父級導航屬性中刪除實體不會從數據庫中刪除子實體的實體。 因此,如果父對象的關系依賴,則還必須刪除它或SaveChanges拋出異常。

我對此不太確定,我現在無法檢查它,但我認為你可以直接更改myCurrentGroupTypeObj屬性,然后再做

ObjectStateManager.ChangeObjectState(myCurrentGroupTypeObj , EntityState.Modified);

我希望它有效。 如果沒有,請告訴我。

暫無
暫無

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

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