Проблемы с прикреплением Entity в LINQ
Я пытаюсь привязать объект LINQ к контексту данных после получения его из формы POST. Однако все, что я получаю, следующее исключение:
An entity can only be attached as modified without original state if it declares a version member or does not have an update check policy.
Я также попытался установить исходную строку, например:
dataContext.People.Attach(person, originalPerson);
В этом случае я получаю следующее исключение:
Object reference not set to an instance of an object.
Здесь код в моем контроллере:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Person person) {
var prevPerson = dataContext.People.Single(p => p.ID == id);
dataContext.People.Attach(person, prevPerson);
dataContext.SubmitChanges();
return Redirect("~/People/Index");
}
Любые идеи о том, что я делаю неправильно здесь? Я могу отправить код сущности, если это необходимо.
Ответы
Ответ 1
В дизайнере LinqToSQL установите все обновления проверки на "Никогда" и когда вы присоедините их так:
context.entity.Attach(entity, true);
Кроме того, вы также можете захватить объект из db и изменить его с помощью данных из объекта POSTed, а затем отправить это как изменение.
Ответ 2
Попробуйте следующее:
dataContext.People.Attach(person);
dataContext.Refresh(RefreshMode.KeepCurrentValues, person);
dataContext.SubmitChanges();
Ответ 3
Я решил, установив UpdateCheck=Never
в мое свойство в файле .Dbml и context.entity.Attach(entity, true);