次のようなPOCOでEFコードを最初に使用する例がたくさんあります。
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
では、Blog
物件をご覧ください。代わりに次のようにすべきではありません:
private Blog blog;
public virtual Blog Blog
{
get
{
return blog;
}
set
{
blog = value;
if (blog != null)
{
BlogId = blog.BlogId;
}
}
}
つまり、すでにモデルを外部キーで「汚染」しているので、少なくとも参照と同期させておくべきではないでしょうか? または、とにかくデータを読み取るときに依存するべきではありません(たとえば、特定のものがリストにあるBlogId
かどうかを知りたい場合など)。BlogId
それとも、DbContext
(のようなKeepForeingKeysPropertiesSyncronizedWithReferences
) に魔法のプロパティがあり、それが私にそれをもたらし、これについて心配している悲しいプログラマは私だけですか? それとも私は妄想的ですか?(また、私の下手な英語で申し訳ありません)
編集
申し訳ありませんが、これは本当にばかげた質問でした。Stefan の言うとおりです。EF は本当にあなたのためにこれを行います。渡していた参照が でロードされていたため、これは見られませんでしたAsNoTracking()
。この状態でのみ、ID を持つ参照があり、外部キー フィールドは 0 になります。既にコンテキストにある参照を渡す限り、それは機能するはずです。