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

C# C/EF型号代码-关系必填字段,c#,entity-framework,entity-framework-migrations,C#,Entity Framework,Entity Framework Migrations,在我目前学习实体框架如何工作时,我遇到了以下问题: 在创建一个基本的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; }

在我目前学习实体框架如何工作时,我遇到了以下问题:

在创建一个基本的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关系既有reference字段,也有Id字段。这是必需的吗

我总是手动连接数据库,只有引用字段

public Blog Blog { get; set; }
通过这种方式,我也可以访问博客Id,而不必同时更新这两个Id。 EF迁移似乎不是这样工作的


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

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

例如:

public virtual Blog Blog { get; set; }
public int BlogId { get; set; }
有关延迟/急切加载的更多信息:

对迁移没有影响,除非您排除FK EF,否则它将在数据库Blog\u ID中为您创建一个。