.net - 何时将 DbSet 添加到 DbContext

标签 .net entity-framework-core

什么时候应该将表的 DbSet 添加到 DbContext?如果一个实体类型没有 DbSet,但被另一个有 DbSet 的实体类型引用,那么两个表都会创建,并且一切如您所愿。

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

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

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

最佳答案

添加 DbSet属性(property)给你DbContext做两件事:

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

它不会以其他方式影响 Entity Framework 。

关于.net - 何时将 DbSet 添加到 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945448/

相关文章:

.net - 如何使用 xmlpeek 在 Nant 中获取多个 xml 节点?

c# - 使用 C# 从 PDF 导出 Illustrator 矢量图像

c# - ASP.NET Core 2.0 web api Entity Framework Core - 寻找更优雅的解决方案

sql-server - 暂停 Azure 功能,直到 Entity Framework 进行更改

asp.net-core - 使用 Entity Framework 7 处理乐观并发的最佳方法

c# - 在 C# 中解码 CDATA 部分

.net - 在同一解决方案中的不同项目中找不到 DB2 .NET dll (db2app.dll) 中的入口点

c# - 尝试插入数据时,Entity Framework Core 中的一对多关系出现错误

c# - 将 VB.NET 2005 项目转换为 C# 2008 项目

asp.net-mvc - Entity Framework Core 1.1.1 连接字符串引发 ArgumentNullException