entity-framework-core - EF Core 自动将表名从设置更改为设置
问题描述
我对 EF Core 生成的表名有疑问。有人可以帮忙吗?
我有一个Setting
EF 配置为的实体
public class SettingConfiguration : IEntityTypeConfiguration<Setting>
{
public void Configure(EntityTypeBuilder<Setting> builder)
{
builder.HasKey(c => c.Id);
builder.ToTable<Setting>(typeof(Setting).Name.ToLower());
builder.Property(c => c.Id).ValueGeneratedOnAdd().IsRequired().HasColumnName("id");
builder.Property(c => c.UserId).IsRequired().HasColumnName("userId");
builder.Property(c => c.ShowEmail).IsRequired().HasColumnName("showEmail");
}
}
但是,当我跑步时dotnet ef migrations add InitialCreate
,我得到了
migrationBuilder.CreateTable(
name: "Settings",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
UserId = table.Column<int>(nullable: false),
ShowEmail = table.Column<bool>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Settings", x => x.Id);
});
我有另一个以Post
EF 配置命名的实体
public class PostConfiguration : IEntityTypeConfiguration<Post>
{
public void Configure(EntityTypeBuilder<Post> builder)
{
builder.HasKey(c => c.Id);
builder.ToTable<Post>(typeof(Post).Name.ToLower());
builder.Property(c => c.Id).ValueGeneratedOnAdd().IsRequired().HasColumnName("id");
builder.Property(c => c.Title).IsUnicode().IsRequired().HasMaxLength(200).HasColumnName("title");
builder.Property(c => c.Comment).IsUnicode().IsRequired().HasMaxLength(1000).HasColumnName("comment");
}
}
EF Core 生成的表名是post
,符合预期。
migrationBuilder.CreateTable(
name: "post",
columns: table => new
{
id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
title = table.Column<string>(maxLength: 200, nullable: false),
comment = table.Column<string>(maxLength: 1000, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_post", x => x.id);
});
解决方案
这是约定,您将模型定义为单数,EF 会将表名创建为复数。
如果你想摆脱它,请给出一个[Table("YourTableName")]
属性。
推荐阅读
- java - 如果文档使用大型 Map 字段,则 Firebase Firestore 查询错误
- tableau-api - 如何计算每月每天、每周和每月的活跃用户数 Tableau
- swift - Firebase 访问规则有问题
- java - 带有 PeerConnection 的 Android WebRTC
- vue.js - 如何在 vuetify 中显示树视图组件
- elasticsearch - 数字范围字段上的 Elasticsearch 聚合
- reactjs - 在我的 React 应用程序中,我无法弄清楚如何将输入框的值传递给按钮的 onclick
- python - 尝试使用下面的 PySerial 代码读取串行端口数据并获取不需要的符号/字符
- html - 带有嵌入式滚动 div 的 Flexbox 布局
- java - 反应堆:使用单声道
或像 Mono 这样的虚拟类型