- 将迁移文件按数据库类型分目录存放 (Migrations/SQLite, MySQL, PostgreSQL, SqlServer) - 新增各数据库提供程序的 DesignTimeDbContextFactory,支持 --provider 参数切换 - 新增 ProviderAppDataContexts,定义各数据库对应的 AppDataContext 子类 - DatabaseExtensions 增加 AddProviderAppDataContext 方法,按配置自动注册对应 DbContext - 修正 MySQL 提供程序调用方式 (UseMySql -> UseMySQL) - UserEntity 模型增加新字段 - 更新 add-migration.ps1
98 lines
5.2 KiB
C#
98 lines
5.2 KiB
C#
using System;
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
|
|
#nullable disable
|
|
|
|
namespace Avalonia_EFCore.Migrations.PostgreSQL
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class AutoMigration_20260520162543 : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.CreateTable(
|
|
name: "api-refresh-token",
|
|
columns: table => new
|
|
{
|
|
id = table.Column<long>(type: "bigint", nullable: false)
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
userid = table.Column<int>(name: "user-id", type: "integer", nullable: false),
|
|
tokenhash = table.Column<string>(name: "token-hash", type: "character varying(128)", maxLength: 128, nullable: false),
|
|
createdat = table.Column<DateTime>(name: "created-at", type: "timestamp with time zone", nullable: false),
|
|
expiresat = table.Column<DateTime>(name: "expires-at", type: "timestamp with time zone", nullable: false),
|
|
revokedat = table.Column<DateTime>(name: "revoked-at", type: "timestamp with time zone", nullable: true),
|
|
replacedbytokenhash = table.Column<string>(name: "replaced-by-token-hash", type: "character varying(128)", maxLength: 128, nullable: true),
|
|
device = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
ipaddress = table.Column<string>(name: "ip-address", type: "character varying(64)", maxLength: 64, nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("pk-api-refresh-token", x => x.id);
|
|
},
|
|
comment: "API refresh token");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "user",
|
|
columns: table => new
|
|
{
|
|
id = table.Column<int>(type: "integer", nullable: false, comment: "用户主键")
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
name = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: true, comment: "用户名称"),
|
|
email = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true, comment: "用户邮箱"),
|
|
phonenumber = table.Column<string>(name: "phone-number", type: "character varying(50)", maxLength: 50, nullable: true, comment: "电话号码"),
|
|
createdat = table.Column<DateTime>(name: "created-at", type: "timestamp with time zone", nullable: false, comment: "创建时间"),
|
|
updatedat = table.Column<DateTime>(name: "updated-at", type: "timestamp with time zone", nullable: false, comment: "更新时间")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("pk-user", x => x.id);
|
|
},
|
|
comment: "用户实体,演示数据库 CRUD 操作");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "weather-forecast",
|
|
columns: table => new
|
|
{
|
|
id = table.Column<int>(type: "integer", nullable: false, comment: "天气预报主键")
|
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
date = table.Column<DateOnly>(type: "date", nullable: false, comment: "预报日期"),
|
|
temperaturec = table.Column<int>(name: "temperature-c", type: "integer", nullable: false, comment: "摄氏温度"),
|
|
summary = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true, comment: "天气摘要"),
|
|
createdat = table.Column<DateTime>(name: "created-at", type: "timestamp with time zone", nullable: false, comment: "创建时间"),
|
|
updatedat = table.Column<DateTime>(name: "updated-at", type: "timestamp with time zone", nullable: false, comment: "更新时间")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("pk-weather-forecast", x => x.id);
|
|
},
|
|
comment: "天气预报数据实体");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "idx-api-refresh-token-hash",
|
|
table: "api-refresh-token",
|
|
column: "token-hash",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "idx-api-refresh-token-user-id",
|
|
table: "api-refresh-token",
|
|
column: "user-id");
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropTable(
|
|
name: "api-refresh-token");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "user");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "weather-forecast");
|
|
}
|
|
}
|
|
}
|