Pertanyaan Masalah lampiran entitas di LINQ


Saya mencoba melampirkan entitas LINQ ke konteks data setelah saya menerimanya dari bentuk POST. Namun, yang saya dapatkan hanyalah pengecualian berikut:

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.

Saya juga mencoba melampirkan baris aslinya, seperti:

dataContext.People.Attach(person, originalPerson);

Dalam hal ini, saya mendapatkan pengecualian sebagai berikut:

Object reference not set to an instance of an object.

Berikut kode di pengontrol saya:

[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");
}

Ada gagasan tentang apa yang saya lakukan salah di sini? Saya dapat memposting kode entitas jika diperlukan.


15
2018-02-11 11:34


asal


Jawaban:


Di perancang LinqToSQL, atur semua Cek Pembaruan ke Jangan dan ketika Anda melampirkan panggilan seperti ini:

 context.entity.Attach(entity, true);

Atau, Anda juga bisa mengambil entitas dari db dan mengubahnya menggunakan data dari entitas POSTed, lalu kirimkan itu sebagai perubahan.


12
2018-02-11 17:36



Coba ikuti:

dataContext.People.Attach(person);
dataContext.Refresh(RefreshMode.KeepCurrentValues, person);
dataContext.SubmitChanges();

15
2018-01-30 12:44



Saya dipecahkan dengan pengaturan UpdateCheck=Never ke properti saya dalam file .dbml dan context.entity.Attach(entity, true);


0
2018-03-04 12:53