1

テーブル内の多対多型の関係を更新しようとすると問題が発生します。

これが私のコードです:

            foreach (ThingCategory category in this.unit.Context.ThingCategories.Where(c => c.ThingId == thingId))
            {
                if (this.unit.Context.Entry(category).State == EntityState.Detached)
                {
                    this.unit.Context.ThingCategories.Attach(category);
                }

                this.unit.Context.ThingCategories.Remove(category);
            }

            foreach (ThingCategory category in categories)
            {
                if (this.unit.Context.Entry(category).State == EntityState.Detached)
                {
                    this.unit.Context.ThingCategories.Attach(category);
                    this.unit.Context.Entry(category).State = EntityState.Added;
                }
                else
                {
                   this.unit.Context.Entry(category).CurrentValues.SetValues(category);
                   this.unit.Context.Entry(category).State = EntityState.Modified;
                }
            }

            this.unit.Context.SaveChanges();

私は得ています:

同じキーを持つオブジェクトが ObjectStateManager に既に存在します。ObjectStateManager は、同じキーを持つ複数のオブジェクトを追跡できません。

ThingCategory エンティティは、ThingId と CategoryId から作成された複合主キーを使用します。

誰かがこれを正しい方法で行うための正しい方向に私を向けることができますか?

ありがとう、

4

0 に答える 0