SuperAPI AI 工具集

d1-05-entity-migration

编程与开发

查看项目

更新于 10-16 02:08

技能介绍

用途

该技能用于在 EF Core 项目中创建一个实体(Entity),并执行迁移以在 Postgres 数据库中创建对应的数据表。它是 CRUD 练习 Day 1 的第 5 步,触发词包括 'day1 step5'、'create entity/table for…'。

主要能力

  • 根据用户提供的实体名称和列定义生成实体类文件。
  • 在 AppDbContext 中注册对应的 DbSet。
  • 运行 EF Core 迁移命令,在 Postgres 中创建数据表。
  • 整个过程无需重新部署,直接作用于已运行的 Postgres 容器。

使用方式

开始前需要向用户询问以下信息:

  • 实体名称(PascalCase,例如 Product、Order、User)——必填。
  • 列定义(格式:ColumnName:Type,逗号分隔,例如 Name:string, Price:decimal, Stock:int)——必填。
  • 可空列(可选,默认所有非字符串/Id 列均为非空)——可选。

技能会严格按指定内容使用,不会建议、添加或修改列。

生成的实体类位于 up-api/Entities/<Entity>.cs,示例结构如下:

public class <Entity>
{
    public int Id { get; set; }
    // one property per given column, e.g.:
    // public string Name { get; set; } = string.Empty;
    // public decimal Price { get; set; }
}

在 AppDbContext 中添加:

public DbSet<<Entity>> <Entity>s => Set<<Entity>>();

然后执行命令:

cd up-api
dotnet ef migrations add Init<Entity>
dotnet ef database update

该命令通过 db-config 步骤中 localhost:5432 的连接字符串作用于已运行的 Postgres 容器,无需重新部署。

适用场景

适用于 EF Core + Postgres 项目在开发阶段快速创建实体和数据表,尤其是 CRUD 练习的 Day 1 第 5 步。

限制

  • 需要用户明确提供实体名称和列定义,技能不会自行推断或修改。
  • 依赖已运行的 Postgres 容器和 db-config 步骤中配置的连接字符串。
  • 验证表是否存在可通过 psql 中的 \dt 命令,或通过 docker exec 进入数据库容器查看。