関連エンティティのコレクションを持つエンティティがあります。
同じキーを持つ新しいエンティティと、新しい関連エンティティ (コレクション) を作成します。
ned 関連エンティティをメイン エンティティのコレクションに追加したので、すべてを DB に保存したいと考えています。
古いエンティティとそのコレクションを見つけて、すべて切り離しました。新しいエンティティを foreach ループにアタッチしたよりも - コレクション内のすべての関連エンティティ。
コミットすると - context.SaveChanges() OptimisticCuncurrencyException ストアの更新、挿入、または削除ステートメントが予期しない数の行 (0) に影響しました。エンティティが読み込まれてから、エンティティが変更または削除された可能性があります。ObjectStateManager エントリを更新します。
何か案は ?
コード:
var old = (from c in context.Category.Include("Products").Where(x => (x.CatID== CatID) select c).FirstOrDefault();
if (old != null)
{
context.Detach(old);
foreach (Product stwp in old.Products)
{
context.Product.Detach(stwp);
}
}
context.Category.Attach(st);
context.ObjectStateManager.ChangeObjectState(st, System.Data.EntityState.Modified);
foreach (Product stwp in st.Products)
{
context.Product.Attach(stwp);
context.ObjectStateManager.ChangeObjectState(stwp, System.Data.EntityState.Modified);
}
context.SaveChanges();