C#/EF 模型代码 - 关系必填字段

C#/EF model code - relationship required fields

因为我目前正在学习 Entity Framework 的工作原理,所以我遇到了以下问题:

关于创建基本的 1:n 关系(代码优先)我读到我应该这样做:

public class Post
{
    public int PostId { get; set; }
    [MaxLength(200)]
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

book-post 关系有引用和 Id 字段。这是必需的吗?

我总是手动连接数据库,只有参考字段

public Blog Blog { get; set; }

这样我也可以访问博客 ID,而不必同时更新这两个 ID。 似乎 EF 迁移不是这样工作的。

有什么原因吗?同时保留参考和 Id 字段是最佳做法吗?

不需要包含 Id,但是如果您想通过使用 virtual 关键字启用延迟加载,并且在某些情况下您只需要对象的 Id,单独包含它可能会有用。

例如:

public virtual Blog Blog { get; set; }
public int BlogId { get; set; }

有关 lazy/eager 加载的更多信息: https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx