例如,我有一个绑定到客户实体的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不起作用?
由于
答案 0 :(得分:2)
您可以使用memberwiseClone方法创建业务对象的浅表副本: 见http://msdn.microsoft.com/de-de/library/system.object.memberwiseclone.aspx
答案 1 :(得分:1)
如果要使用数据存储区中的最新值更新内存中Customer实体的值,可以在ObjectContext上使用Refresh方法。
在你的情况下,它看起来像:
context.Refresh(RefreshMode.StoreWins, cus1);
如果您真的想要映射两个实体,可以查看AutoMapper。 AutoMapper将通过默认设置自动将实体映射到您,帮助您根据需要进行调整。
答案 2 :(得分:1)
您也可以使用序列化或反射来自行完成。然而,两种方法都比较慢,直接写它。
看看这篇文章。也许你会觉得它很有帮助:
http://www.codeproject.com/KB/dotnet/CloningLINQ2Entities.aspx
编辑: 顺便说一句。请记住,使用MemberwiseClone,如果ReferenceTypes将复制引用,而不是对象。