Клонировать самопроверяющиеся сущности в EF 4.0? - PullRequest
0 голосов
/ 07 декабря 2011

Как я могу клонировать самосопровождаемый граф сущностей в EF 4.0?

Спасибо

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Самообследуемые сущности являются сериализуемыми, поэтому самый простой способ получить глубокий клон сущности (deep clone = clone of graph) - использовать DataContractSerializer, сериализовать и немедленно десериализовать его.Десериализованная сущность станет вашим клоном графа.

0 голосов
/ 07 декабря 2011

Когда вы говорите «клон», вы имеете в виду создать новую сущность, которая будет сохраняться, или просто создать другую «временную» сущность, которая является копией той же сущности в памяти?

Если вы хотите сделать копию в памяти, вы всегда можете создать новый экземпляр класса сущности и скопировать поля.Изменения к нему не будут отслеживаться, так как вы не сообщили контексту об этом.

var newInstance = new SomeEntity() { SomeProperty = oldInstance.SomeProperty };

Если вы хотите создать новую сущность, которая будет сохранена, просто выполните обычные операции, которые вы 'буду делать, чтобы вставить новую запись.Например:

context.SomeEntities.Add(newInstance);

Вы не можете логически создать полную копию, которая отслеживает изменения, но ссылается на тот же экземпляр.Какую версию объекта вы бы взяли?

...