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();
}
}
でも、同じエラーが表示されます。
私はデータベースから顧客を取得し、パラメータ顧客プロパティからプロパティを更新したくありません。私は、同じパラメータの顧客を使用し、それをデータベースで更新したい。
私を助けてください。 ありがとう!
を必要なときにそれを使用することであろう2つの異なるコンテキスト に簡単にオプションを与え、あなたはステートメントを使用して2つを持っている、私はしたくありませんデータベースから顧客を取得し、プロパティを更新します。説明をお読みください。 どのように、あなたの答えをありがとう。 – Saadi
Attach()を使用する理由を理解できませんが、attach()メソッドを使用する場合は、savechanges().https://msdn.microsoft.com/en-us/data/の前にentityのプロパティを変更する必要があります。 jj592676.aspx – Mehmet
パラメータとして渡される顧客のモデルオブジェクトを変更しました。 – Saadi