何时将 DbSet 添加到 DbContext

When to add a DbSet to the DbContext

什么时候应该将 table 的 DbSet 添加到 DbContext?如果一个实体类型没有 DbSet 但被另一个有 DbSet 的实体类型引用,那么两个 table 都会被创建并且事情会如你所期望的那样工作。

在您不使用的 DbContext 上拥有 DbSet 属性是否会产生任何开销?应该避免吗?在没有 DbSet 的情况下,是否存在无法可靠地跟踪实体更改的情况?

我在使用代码优先模型时发现的一个潜在的小问题是,如果您不为引用的实体类型添加 DbSet,table 名称将使用单数名称生成。但是,如果您稍后添加具有复数名称的 DbSet(似乎是惯例),您将为 table 重命名生成迁移。

我在文档中找不到这方面的任何指导。

DbSet 属性 添加到您的 DbContext 会做两件事:

  1. 让您可以使用 db.Customers(废话)而不是 db.Set<Customer>() 来查询 table。属性由 EF 初始化。
  2. 配置 table 名称。它是 shorthand for modelBuilder.Entity<Customer>().ToTable("Customers") (如您所见)请注意,EF 并未将名称复数化;你是。 ;)

它不会影响 Entity Framework。