Клонирование данных по Платформе Объекта

Я создаю программное обеспечение, где пользователь может создать новый продукт на основе более старого продукта.

Теперь я должен сделать копирование / операции клонирования с Платформой Объекта. Сначала я начал писать как это:

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
   }
}

Проблема состоит в том что это не хороший способ сделать это. Есть ли какой-либо простой способ информация о клоне (кроме Гуида, который должен быть сгенерирован для новых строк), или я должен вручную скопировать все?

Другое решение

Вы могли также использовать EmitMapper или AutoMapper, чтобы сделать копирование свойств.

51
задан Tx3 14 February 2012 в 21:39
поделиться

2 ответа

Используя прямую сериализацию, вы можете сделать следующее:

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

15
ответ дан 7 November 2019 в 10:06
поделиться

Чтобы клонировать объект в 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();
65
ответ дан 7 November 2019 в 10:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: