エンティティフレームワーク - ナビゲーション特性を持つエンティティに追加する方法

entity-framework

質問

Entity Frameworkを使用してSQL Serverテーブルにレコードを追加したいです。私のテーブルのエンティティは外部キーを持っているので、それらのフィールドのナビゲーションプロパティも持っています。新しいレコード/エンティティを追加するとき、エンティティのプロパティとして表示されないため、外部キーフィールドにどのように値を設定しますか

受け入れられた回答

最も簡単な方法は、関連するエンティティに対してクエリを実行し、ナビゲーションプロパティを使用することです。

すなわち

Product p = new Product{
   ID = 5,
   Name = "Bovril",
   Category = ctx.Categories.First( c => c.ID == 5)
};
ctx.AddToProducts(p);
ctx.SaveChanges();

データベースクエリを避けたい場合、最も簡単な方法はおそらくSTUBエンティティを使用することです。

// this is a stub, a placeholder for the real entity
Category c = new Category {ID = 5}; 
// attach the stub to the context, similar to do a query
// but without talking to the DB
ctx.AttachTo("Categories", c);
Product p = new Product{
   ID = 5,
   Name = "Bovril",
   Category = c
};
ctx.AddToProducts(p);
ctx.SaveChanges();

このスタブ手法についてさらに支援が必要な場合は、このトピックに関するこのブログ投稿を調べてください。



Related

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