我看到很多关于首先使用 EF 代码和 POCO 的示例,这些示例显示如下:
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
(like KeepForeingKeysPropertiesSyncronizedWithReferences
) 上有一个神奇的属性对我这样做,而我是唯一对此感到担忧的可悲程序员?还是我偏执?(另外,对不起我的英语不好)
编辑
对不起-这确实是一个愚蠢的问题。Stefan 是对的,EF 确实为您做到了这一点。我没有看到这个,因为我传递的引用加载了AsNoTracking()
. 只有在这种情况下,您才会有一个带有 ID 的引用,并且外键字段将为 0。只要您传递一个已经在上下文中的引用,它应该可以工作。