скопировать сущность в рамках сущности? - PullRequest
0 голосов
/ 18 ноября 2011

Например, у меня есть окно wpf, привязанное к сущности клиента (предположим, что это cus1).Затем я загружаю другую сущность из контекста:

customer cus2 = context.customers.where(x=>x.id=10).FirstOrDefault();

Теперь я хочу cus1 = cus2?Я могу сделать это следующим образом:

cus1.name = cus2.name;
cus1.address = cus2.address;
...
...

Этот способ соответствует моему случаю (содержимое текстовых полей в форме немедленно изменяется на значения cus2), но мне интересно, есть ли способ сделать его короче, так как cus1 = cus2не работает?

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 ноября 2011

Вы можете использовать членный метод Clone для создания мелкой копии бизнес-объекта: См. http://msdn.microsoft.com/de-de/library/system.object.memberwiseclone.aspx

1 голос
/ 18 ноября 2011

Вы также можете использовать Сериализацию или Отражение, чтобы сделать это самостоятельно.Однако оба метода медленнее, чем его непосредственная запись.

Взгляните на эту статью.Может быть, вы найдете это полезным:

http://www.codeproject.com/KB/dotnet/CloningLINQ2Entities.aspx

Редактировать: Кстати.Помните, что при использовании MemberwiseClone в случае ReferenceTypes будет происходить копирование ссылок, а не объектов.

1 голос
/ 18 ноября 2011

Если вы хотите обновить значения сущности Customer в памяти новыми значениями в хранилище данных, вы можете использовать метод Refresh в ObjectContext.

Вот документация .

В вашем случае это будет выглядеть так:

context.Refresh(RefreshMode.StoreWins, cus1);

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

...