クライアントプロジェクトのDataServiceContextクラスへのサービス参照があります。新しいエンティティを新しいエンティティでDataServiceContextに保存する
新しいエンティティを作成してデータベースコンテキストに保存する必要があります。
リンクエンティティなしでこのエンティティを単独で保存するとすべてがうまく行きます。
A a = new A();
context.AddToAs(a);
context.BeginSaveChanges(o=>{
//some after-save code there
}, null);
しかし、このようなコード:
A a = new a(); //parent entity
B b = new b(); //child entity which has corresponding b.A navigation
//property and b.AId field for referencing 'A' entity primary
//key.
a.b = b;
context.AddToAs(a);
context.AddToBs(b);
context.SetLink(b, "A", a);
context.BeginSaveChanges(o=>{
//some after-save code here
}, null);
は...エラー "FOREIGN KEY制約と競合INSERT文" で失敗します。
もちろん、新しく作成された 'A'エンティティのプライマリキーは '0'に設定されており、b.AIdのような 'B'エンティティの対応するナビゲーションプロパティは保存時に '0'と同じです。そしてそれは問題を引き起こします - '0'主キーを持つ 'A'エンティティは既にデータベースに存在します。
私は 'A'エンティティを最初に保存しなければなりません。 'A'エンティティが保存されて実際のIDを受け取るように、リンクされた 'B'が割り当てられません。 'B'エンティティが保存されます。
私は何かひどく間違っていると確信していますが、誰かが1つのSaveChangesでそれを作る方法について提案できますか?