Entity Framework 6 - обновление записи в БД путем копирования другой записи в БД - PullRequest
0 голосов
/ 23 ноября 2018

Я только начал с Asp.NET MVC & EF, и я предполагаю, что должно быть простое решение для того, что я пытаюсь сделать.

Что я хочу сделать:

Обновить существующую запись базы данных значениями другой записи базы данных.

В своем действии Post Controller я передаю идентификатор исходной записи.и идентификатор записи должен быть скопирован поверх исходного.

var orgRecord = ctx.Model.Where(x => x.ID == vm.ID)...
var copyRecord = ctx.Model.Where(x => x.ID == vm.IDtoCopy)...

Я пробовал разные подходы, но всегда получаю ошибку, что ID"является частью ключа объектаинформация и не может быть изменена "

Вот некоторые из моих попыток:

 orgRecord.ID = copyRecord.ID

 ctx.Entry(orgRecord).CurrentValues.SetValues(copyRecord);
 ctx.Entry(orgRecord).State = EntityState.Modified;
 ctx.Entry(orgRecord).Property(x => x.ID).IsModified = false;

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

Спасибо.

1 Ответ

0 голосов
/ 24 ноября 2018

Попробуйте следующее: получите copyRecord с помощью AsNoTracking(), затем установите идентификатор в исходное значение, затем присоедините к контексту, установите для параметра «Состояние» значение «Изменено» и сохраните.

...