克隆實體框架的數據

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();


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因