You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过EF Core Code-First从单个类生成两张数据库表

如何通过EF Core Code-First生成users和userchanges两张表

问题原因

EF Core默认会将同一个实体类型users映射到单一数据库表,即便你定义多个DbSet<users>,它也不会自动生成新表——因为EF Core识别的是实体类型,而非DbSet的名称。

解决方法

方法一:创建继承实体类(推荐)

定义一个新的UserChanges类继承自users,无需额外属性:

public class UserChanges : users
{
    // 继承父类所有字段,无需新增属性
}

在AppDbContext中添加对应的DbSet:

public DbSet<users> Users { get; set; }
public DbSet<UserChanges> UserChanges { get; set; }

执行迁移命令生成新表:

  • Package Manager Console:Add-Migration AddUserChangesTable,再执行Update-Database
  • CLI命令:dotnet ef migrations add AddUserChangesTable,再执行dotnet ef database update

方法二:用Fluent API配置多表映射

如果不想新增实体类,可在AppDbContext的OnModelCreating方法中,为同一个users实体配置两个独立表:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // 将users实体映射到users表
    modelBuilder.Entity<users>().ToTable("users");
    // 将users实体映射到userchanges表
    modelBuilder.Entity<users>().ToTable("userchanges");
}

完成配置后执行迁移命令,即可生成结构完全一致的两张表。

注意事项

  • 方法一更符合EF Core的实体设计逻辑,后续扩展实体属性或新增业务逻辑时更灵活;
  • 方法二生成的两张表结构完全同步,若修改users实体的属性,迁移会同时更新两张表。

内容的提问来源于stack exchange,提问作者Hosein Ghasemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:10:58