您是否需要为所有实体定义DbSet?

时间:2018-12-22 00:22:19

标签: entity-framework

我正在学习EF,并且不清楚何时为实体创建DbSet。在Microsoft Docs具有的标准Blog示例中,他们为Blog和Post定义了DbSet。为什么需要为帖子创建DbSet?通过博客无法访问帖子,因此我可以使用LINQ查询获取帖子?

public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public int Rating { get; set; }
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

1 个答案:

答案 0 :(得分:0)

  

为什么需要为帖子创建DbSet?

这不是绝对必要的。 EF Core中的规则是:

  

按照惯例,您的DbSet属性中公开的类型   上下文包含在模型中。此外,   还包括OnModelCreating方法中提到的内容。最后,   通过递归浏览导航找到的任何类型   模型中还包括发现类型的属性。

Including & Excluding Types

但是常见的做法是为每个实体声明一个DbSet,因为您可能想编写一个以Posts开头的查询,或者检索没有相关Blog的单个Post。