LINQ to SQL (DBML)을 사용하여 Entity/Model을 업데이트하려고합니다. 그러나 나는 그것을 할 수 없다.다른 데이터 컨텍스트에서 LINQ to SQL (DBML) 업데이트 엔터티
다음은 제 코드입니다.
public void Update(Customer customer)
{
using (MyDataContext db = new MyDataContext())
{
db.Customers.Attach(customer, true);
db.SubmitChanges();
}
}
public Customer GetByID(int ID)
{
using (MyDataContext db = new MyDataContext())
{
return db.Customers.FirstOrDefault(c => c.CustomerID == ID);
}
}
내 시나리오는 다음과 같습니다. 고객 개체를 가져 와서 고객 개체를 양식에 바인딩합니다. 양식 입력 데이터를 변경 한 후 데이터는 완벽하게 변경되지만 update 메소드를 호출하면됩니다. 업데이트 중이 아니며 다음 오류가 있습니다.
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.
나는 많은 인터넷을 검색했지만 적절한 해결책을 찾을 수 없습니다. 또한 업데이트 기능을 다음과 같이 수정했습니다.
public void Update(Customer customer)
{
using (MyDataContext db = new MyDataContext())
{
var originalCustomer = db.Customers.FirstOrDefault(c => c.CustomerID == customer.CustomerID);
db.Customers.Attach(customer, originalCustomer);
db.SubmitChanges();
}
}
그래도 여전히 같은 오류가 발생합니다.
고객을 데이터베이스에서 가져 와서 매개 변수 고객 속성에서 속성을 업데이트하고 싶지 않습니다. 동일한 매개 변수 고객을 사용하여 데이터베이스에서 업데이트하려고합니다.
도와주세요. 감사합니다.
을 필요로 할 때 사용하는 것이 다른 문맥 에게 더 쉬운 옵션을 제공, 당신이 문을 사용하여 두 가지를 가지고, 난 싶지 않아 데이터베이스에서 고객을 얻고 속성을 업데이트하십시오. 설명을 읽으십시오. 어떤 방법으로 답변 해 주셔서 감사합니다. – Saadi
Attach()를 사용하려는 이유를 모르겠지만 attach() 메서드를 사용하는 경우 savechanges() .https : //msdn.microsoft.com/en-us/data/보다 먼저 엔터티의 속성을 변경해야합니다. jj592676.aspx – Mehmet
매개 변수로 전달되는 고객의 모델 객체를 변경했습니다. – Saadi