繁体   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