0

2 回保存する必要があるエンティティがあります。1回目はIDの設定です。この ID は署名を計算するために入力する必要があり、その署名はエンティティに保存されます。

次のコードを参照してください。

var newEntity = new MyEntity 
    { 
        \\ set values 
    };

using (var db = MyContainer.CreateContainer())
{
    db.MyEntity.Add(newEntity);
    // Call SaveChanges() to set the ID.
    db.SaveChanges();

    // I need to do some calculation on the entity
    myEntity.Signature = CalculateSignature(myEntity);
    db.SaveChanges(); // <--- This causes the exception
}

このコードにより、InvalidOperationException が発生します。つまり、The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects.

わかりません。同じエンティティを 2 回保存することはできませんか? これを達成するにはどうすればよいですか?

4

2 に答える 2

2

CalculateSignatureそれも文脈を生み出すと思います。EntityFrameworkの複数のオブジェクトコンテキストを見てください

于 2012-10-05T13:20:38.643 に答える
0

これは通常、オブジェクト間で共有コンテキストを使用していない場合に発生します。

コンテキストを含むレコードをロードしてから、それをリポジトリに渡しますか?

親コンテキストを使用するのではなく、保存する新しいコンテキストを作成するリポジトリがありますか?

すべてのクエリに共有DbContextを使用する、「作業単位」パターンのようなデザインパターンを調査することをお勧めします。

http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

于 2012-10-05T13:20:17.613 に答える