0

エンティティ フレームワークは初めてで、調整に苦労しています。すべてのことと同様に、最初は CRUD 操作がどれほど簡単になるかを見て、素晴らしいと思いました。しかし、私のオブジェクト モデルが少し複雑になるにつれて、私はそれにますます多くの問題を抱え始めました。

これまでにここで検索することで、事実上すべての質問に対する回答を見つけることができましたが、現在の質問は私を困惑させます.

1 対 1/0 の関係でリンクされている 2 つのエンティティがあります。まだ画像を投稿できないので、下の怪しげな絵を見てください。

Person (id, name, address, dob, etc. etc.)
Spouse (id, name, address, dob, etc. etc.)

実際はもっと複雑ですが、私の問題の一部ではないと思います。

ここで、これが 1 対 0/1 の関係であることを確認すると、配偶者が 1 人であるか、0 であるかのいずれかです。

Person person = new Person();
person.Spouse = new Spouse(); 
person.Spouse = spouse;

(プロパティ設定が含まれていると想像してください)

保存します。それは御馳走になります。その後、再度読み込み、編集などを行うことができます。人生は壮大です。

私が問題に遭遇するのは、人 (配偶者なし) を保存してから、後の段階で編集するためにその人をロードし、配偶者を添付しようとする場合です。私のコンテナに着いたら.Attach(person); 呼び出すと、次の例外がスローされます: 「一時的な EntityKey 値を持つオブジェクトは、オブジェクト コンテキストにアタッチできません。」

今、私はこれが配偶者を追加する方法によるものであると非常に確信しています。

Person person = LoadPerson(id);
Spouse spouse = new Spouse();
person.Spouse1 = spouse;

私が見ている問題は、以前に関連付けられていなかった子エンティティを関連付けようとしていることです。エラー メッセージについて多くの検索を行いましたが、一般的にはオブジェクト コンテキストに関連しているようです。また、回避策を見つけました(見つけた結果から)。1 対多の関係を使用して Person.Spouses.Add(spouse) を実行すると、正常に動作します。ただし、関係が論理的ではないため、そうするのをためらっています(とにかくこの国では...)。私が見た結果で明らかに見落としていたのは簡単な答えだと確信しています(私がこれを最初に試みたのではないかと強く疑っています...)が、私が試したものは何もうまくいかないようです。

どんな助けでも大歓迎です...

4

1 に答える 1

0

おそらく最初に Spouse を Context に追加する必要があります

Context.Spouses.Add(spouse);

Person にアタッチする前に。

于 2012-11-07T00:53:02.870 に答える