Проблемы с прикреплением 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);