Обновить свойства между 2 экземплярами сущности - PullRequest
0 голосов
/ 03 февраля 2012

Допустим, у меня есть 2 экземпляра одной и той же сущности, a и b

a.SomeProp = 2;
b.SomeProp = 1;

Я бы хотел обновить a с b: s свойствами:

a = b;
context.SaveChanges();

(a присоединен к контексту, b нет)

Однако значения не обновляются.Я полагаю, я делаю это неправильно.Любая помощь очень ценится.

Ответы [ 5 ]

1 голос
/ 03 февраля 2012

Если вы делаете

a = b

, тогда вы устанавливаете a, указывая на тот же объект, что и b (и исходный объект, на который указывает, отбрасывается).

Вам необходимоназначьте свойства, которые вы хотите обновить, например:

a.SomeProp = b.SomeProp
1 голос
/ 03 февраля 2012

Да, ты.Вы заменяете свой экземпляр a на b, так что a и b не будут привязаны к контексту.

Вам нужно

a.SomeProp = b.SomeProp
1 голос
/ 03 февраля 2012

Либо вы создаете метод для того объекта, который выполняет копирование, либо вы создаете что-то вроде конструктора копирования

Метод копирования будет выглядеть примерно так:

a.CopyFrom(b);

, где

void CopyFrom(Entity b)
{
    a.SomeProp = b.SomeProp;
    a.SomeProp2 = b.SomeProp2;
...
}

Оператор = не делает то, что вы хотите. Также обратите внимание, что вы не можете перегрузить оператор =, если это то, что вам нужно.

0 голосов
/ 03 февраля 2012

Я не проверял, но вы можете попробовать это.

dc.Entry(a).State = System.Data.EntityState.Detached;
dc.Entry(b).State = System.Data.EntityState.Modified;
0 голосов
/ 03 февраля 2012

SaveChanges выполняет обновление между всеми данными, полученными из структуры сущностей, и откорректированными объектами в вашем контексте.Есть ли способ получить b из контекста?Делать то же самое с объектом, который происходит из контекста, для которого это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...