Entity Framework EntityKey /外部キー問題

entity entity-framework entitykey foreign-keys

質問

フォーム投稿の結果として、私は新しいBrandレコードを保存しようとしています。私の考えでは、Genderはドロップダウンで、ViewDataから取り込まれたIntegerを返します( "gender")。

次のようにリンクを設定しました。

gID = CInt(Request.Form("Gender"))
Brand.GenderReference.EntityKey = New EntityKey("DB_ENTITIES.Gender", "Id", gID)
TryUpdateModel(Brand)
DB.SaveChanges()

これにより、次のようなエラーが発生します。

Entities in 'DB_ENTITIES.Brand' participate in the 'FK_Brand_Gender' relationship. 0 related 'Gender' were found. 1 'Gender' is expected.

誰かが私に平易な英語でパラメータを説明してもらえますか。私はDB.Genderも最初のパラメータとして試しましたが、喜びはありません。

受け入れられた回答

EntityKeyを作成するのではなく、スタブGenderオブジェクトを作成します(申し訳ありませんが、C#ではVBの人ではありません)。

Gender g = new Gender{ID = Int32.Parse(Request.Form("Gender"))};

次に、Genderを適切なEntitySet添付します(Genderエンティティを取得するDB上のプロパティの名前は以下の文字列です)。

DB.AttachTo("Genders",g);

これにより、データベースは照会されずに、GenderがObjectContext内の変更されていない状態になります。これで、通常どおりに関係を構築できます

brand.Gender = g;
DB.AddToBrand(brand);
DB.SaveChanges();

それだけです。 EntityKeysをいじる必要はありません。

お役に立てれば

アレックス


人気のある回答

必要なのはBrandとGenderの両方のインスタンスで、次にBrand.GenderをGenderのインスタンスに設定します。その後、問題なく保存できます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ