【问题标题】:When to add a DbSet to the DbContext何时将 DbSet 添加到 DbContext
【发布时间】:2017-01-30 21:08:46
【问题描述】:

何时应将表的 DbSet 添加到 DbContext?如果一个实体类型没有 DbSet,但被另一个具有 DbSet 的实体类型引用,那么这两个表都会创建,并且事情会按您的预期工作。

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

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

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

【问题讨论】:

    标签: .net entity-framework-core


    【解决方案1】:

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

    1. 允许您使用db.Customers (duh) 而不是db.Set<Customer>() 查询表。属性由 EF 初始化。
    2. 配置表名。它是modelBuilder.Entity<Customer>().ToTable("Customers") 的简写(如您所见)注意,EF 并不是名称的复数形式。你是。 ;)

    它不会影响实体框架。

    【讨论】:

      猜你喜欢
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2013-08-11
      • 2012-11-11
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多