我正在学习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; }
}
答案 0 :(得分:0)
为什么需要为帖子创建DbSet?
这不是绝对必要的。 EF Core中的规则是:
按照惯例,您的DbSet属性中公开的类型 上下文包含在模型中。此外, 还包括OnModelCreating方法中提到的内容。最后, 通过递归浏览导航找到的任何类型 模型中还包括发现类型的属性。
但是常见的做法是为每个实体声明一个DbSet,因为您可能想编写一个以Posts开头的查询,或者检索没有相关Blog的单个Post。