entityframework克隆或将实体实例复制到另一个对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了entityframework克隆或将实体实例复制到另一个对象相关的知识,希望对你有一定的参考价值。

我正在开发一个asp.net mvc core 2.0项目和entityframework。

我正在使用viewmodel概念。

这意味着我不直接将实体实例传递给我的视图,我传递一个viewmodel实例,它只包含视图所需的内容。

在一种情况下,我需要传递整个实体字段和其他信息。

我所做的是从我的实体类派生出来的ViewModel类。我添加了额外的字段:

public MyViewModel: Person
{
    // I will automaticly have Person fields in MyViewModel
    public bool IsSelected {get;set;}
    public String otherinformation {get;set;}
    ...
}

我厌倦了从我的实体实例中分配我的viewmodel的每个字段。

myviewmodelinstance.field1 = myentity.field1;
myviewmodelinstance.field2 = myentity.field2;
myviewmodelinstance.field3 = myentity.field3;
myviewmodelinstance.IsSelected = false;
...

我需要在回发中执行逆操作。

有没有办法“复制”或“克隆”每个字段,如下所示:

myentity.CopyTo(myviewmodelinstance);
myviewmodelinstance.IsSelected = false;

谢谢

答案

您可以使用AutoMapper来实现它。这是执行它的理想方式。另一种选择是你可以将对象序列化和deseriliaze为json。

var myviewmodelinstance = JsonConvert.DeserializeObject<MyViewModel>(JsonConvert.SerializeObject(myentity));

注意:我提供的代码需要Json.Net

以上是关于entityframework克隆或将实体实例复制到另一个对象的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 6:除 ID 之外的克隆对象 [关闭]

反射实现java深度克隆

克隆 JavaScript 对象时如何排除键列表? [复制]

Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

Java:深度克隆/复制实例的推荐解决方案

原型模式(浅克隆和深克隆)