簡體   English   中英

在實體框架中復制實體?

[英]copy entity in entity framework?

例如,我有一個綁定到客戶實體的wpf窗口(假設它是cus1)。 然后我從上下文加載另一個實體:

customer cus2 = context.customers.where(x=>x.id=10).FirstOrDefault();

現在我想要cus1 = cus2嗎? 我可以這樣:

cus1.name = cus2.name;
cus1.address = cus2.address;
...
...

這種方式符合我的情況(表格中文本框的內容立即變為cus2的值),但是我想知道是否有任何方法可以使它更短,因為cus1 = cus2不起作用?

謝謝

您可以使用memberwise Clone方法來制作業務對象的淺表副本:請參閱http://msdn.microsoft.com/de-de/library/system.object.memberwiseclone.aspx

如果要使用數據存儲中的最新值更新內存中的Customer實體的值,則可以在ObjectContext上使用Refresh方法。

這是文檔

在您的情況下,它看起來像:

context.Refresh(RefreshMode.StoreWins, cus1);

如果您真的想映射兩個實體,可以看看AutoMapper AutoMapper將使用默認設置自動調整彼此之間的映射關系,您可以根據需要進行調整。

您也可以使用序列化或反射來自行完成。 但是,這兩種方法都比直接寫入要慢。

看一下這篇文章。 也許您會發現它很有幫助:

http://www.codeproject.com/KB/dotnet/CloningLINQ2Entities.aspx

編輯:順便說一句。 請記住,如果使用ReferenceType,則使用MemberwiseClone會影響復制引用而不是對象。

暫無
暫無

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

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