克隆实体框架的数据

entity-framework

我正在创建软件,用户可以根据旧产品创建新产品。

现在我需要使用Entity Framework进行复制/克隆操作。首先,我开始写这样的:

foreach(sourcedata1 in table1)
{
   ... create new table
   ... copy data
   ... create Guid
   ... add
   foreach(sourcedata2 in table2)
   {
       ... create new table
       ... copy data
       ... create Guid
       ... add       

       ... and so on
   }
}

问题是,这不是一个很好的方法。是否有任何简单的方法克隆信息(除了需要为新行生成的Guid)或者我应该手动复制所有内容?

其他方案

您还可以使用EmitMapper或AutoMapper来复制属性。

一般承认的答案

使用直接序列化,您可以这样做:

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/a967b44b-c85c-4afd-a499-f6ff604e2139/

使用Reflection,但需要更多代码,您可以执行此操作: http//msmvps.com/blogs/matthieu/archive/2008/05/31/entity-cloner.aspx


热门答案

要在Entity Framework中克隆实体,您只需从DataContext分离实体,然后将其重新添加到EntityCollection

context.Detach(entity);
entityCollection.Add(entity);

EF6 + 更新 (来自评论)

context.Entry(entity).State = EntityState.Detached;
entity.id = 0;
entity.property = value;
context.Entry(entity).State = EntityState.Added;
context.SaveChanges();



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因