1

エンティティ フレームワークを使用して、クラス A とクラス B の間に 1 対 1 の関係を構築しました (簡潔にするために省略しています)。

class A
{
    // Some other stuff

    // Relationship to class B
    public B B { get; set; }
}

class B
{
    // Some other stuff

    // Relationship to class A
    [Required]
    public A A { get; set; }
}

作成したコンテキストからクラス A の特定のエンティティを呼び出すときに、クラス B の新しいインスタンスへの参照を与えたいと考えています。

// Again, simplified for brevity
A a = context.A.First()

B b = new B();

// In a roundabout way, they both get a reference to each other
a.B = b;
b.A = a;

context.Entry(a).State = EntityState.Modified;

context.SaveChanges();

私の問題は、これを実行して、このコードが実行された関数に戻ると、ブレークポイントをトリガーしてcontext.Bのリストを調べるまで、オブジェクト A にオブジェクト B の参照がないことです。context.Bクラス B のリストには、A が指すべきオブジェクトが含まれていますが、ブレークポイントしてリストを調べるまで、A にはその参照がありません。

誰にもアイデアはありますか?

4

2 に答える 2

1

クラス定義でAandBプロパティを作成しようとしましたか? virtualフィードバックをお願いします。よくわかりませんが、それが問題である可能性があります。

于 2013-03-07T22:17:25.040 に答える
1

コンテキストから引き出しAますが、コンテキストが理解できる方法で B との新しい関係について伝える必要があると思います。

context.Bs.Add(b); //context now knows about the new b entity
a.B = b;
context.Entry(a).State = EntityState.Modified; //I think this is needed only of a's scalar properties have changed? but there is no harm in adding it anyway
context.SaveChanges();

設定するa.B=b;context.Entry(a).State = EntityState.Modified;、a のオブジェクト グラフ内の設定されていないエンティティが B のように Modified に設定されます。を使用Add()すると、これが行われます。

于 2013-03-07T14:57:46.523 に答える