linq2sqlを使用してエンティティを更新するベストプラクティスは何ですか?Linq2SQLのエンティティを更新するベストプラクティスは何ですか?
もう少し詳しくundestandしてください。
記事から理解したように、エンティティはスクラッチ(または既存のエンティティ)から構築されたコンテキストとエンティティに付加されている2つの状況があります。
var orders = GenericRepository.Instance.Find<BuyerOrder>(b => b.ID == 2).FirstOrDefault();
orders.Price = 397809;
GenericRepository.Instance.Save(orders);
オブジェクトがすでにに添付されています。私は、コードを実行すると、当然のことながら
public virtual void Save<T>(T value) where T : class
{
Context.GetTable<T>().Attach(value);
Context.Refresh(RefreshMode.KeepCurrentValues, value);
Context.SubmitChanges();
}
:私はentitesを更新する唯一の方法、それは今のところ次のように実装されていますが持っていると思いました文脈と私は例外を持っています:
Cannot attach an entity that already exists.
保存する前にオブジェクトを必ず離すべきですか?この問題を克服する別の方法がありますか?
申し訳ありませんが、質問がダムである場合 - これは表を添付していない、あなたのSave
方法ではlinq2sql
この正解です。エンティティを切り離したり、トリックを演じたりしないでください。個々のエンティティを「保存」しないでください。オブジェクトグラフ全体を変更し、最後にSaveChangesを呼び出します。 – usr
お返事ありがとうございます。しかし、エンティティがコンテキストに添付されていることをどのように定義できますか?エンティティがコンテキストにアタッチされているときとそうでないときの2つの状況を処理したい場合 –
エンティティがアタッチされているかどうかは、この質問に記載されている答えを使用して定義できます。http://stackoverflow.com/questions/6493737/how-do-i-check-a-linq-to-sql-object-is-already-attach-a-datacontext – mattytommo