0

関連エンティティのコレクションを持つエンティティがあります。

同じキーを持つ新しいエンティティと、新しい関連エンティティ (コレクション) を作成します。

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();
4

1 に答える 1

0

解決策は、最初にすべてのオブジェクトを削除してから挿入することでした。私の好きなものではありませんが、誰もより良いものを提供していませんでした。

于 2013-01-20T13:42:59.757 に答える