如何使用Pomelo.EntityFrameworkCore.MySql为主键设置 AUTO_INCREMENT 初始值?
CREATE TABLE my_table (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
) AUTO_INCREMENT = 10000;
问题
我需要创建一个 bigint 主键从 10000 开始的表。
生成的脚本
CREATE TABLE `Identity.User` (
`Id` bigint NOT NULL AUTO_INCREMENT,
`UniqueId` varchar(128) CHARACTER SET utf8mb4 NOT NULL,
`Username` varchar(128) CHARACTER SET utf8mb4 NOT NULL,
`NormalizedUsername` varchar(128) CHARACTER SET utf8mb4 NOT NULL,
`Password` varchar(128) CHARACTER SET utf8mb4 NOT NULL,
`Email` varchar(128) CHARACTER SET utf8mb4 NOT NULL,
`NormalizedEmail` varchar(128) CHARACTER SET utf8mb4 NOT NULL,
`Phone` varchar(16) CHARACTER SET utf8mb4 NULL,
`Mobile` varchar(16) CHARACTER SET utf8mb4 NOT NULL,
`CreatedAt` datetime(6) NOT NULL,
`Enabled` tinyint(1) NOT NULL,
`Active` tinyint(1) NOT NULL,
`EmailConfirmed` tinyint(1) NOT NULL,
`EmailConfirmationCode` longtext CHARACTER SET utf8mb4 NOT NULL,
`EmailConfirmationDeadline` datetime(6) NOT NULL,
`MobileConfirmed` tinyint(1) NOT NULL,
`MobileConfirmationCode` longtext CHARACTER SET utf8mb4 NOT NULL,
`MobileConfirmationDeadline` datetime(6) NOT NULL,
`LoginFailCount` int NOT NULL,
`LockoutUntil` datetime(6) NOT NULL,
CONSTRAINT `P_Identity.User__Id` PRIMARY KEY (`Id`)
) CHARACTER SET utf8mb4; -- **AUTO_INCREMENT=10000 need this**
我的身份列的 C# 静态方法
public static PropertyBuilder<long> SetIdentity(this PropertyBuilder<long> builder, DatabaseFacade database, int startsAt = 1, int incrementsBy = 1)
{
switch (database)
{
case DatabaseFacade db when db.IsSqlServer():
SqlServerPropertyBuilderExtensions.UseIdentityColumn(builder, startsAt, incrementsBy);
break;
case DatabaseFacade db when db.IsNpgsql():
NpgsqlPropertyBuilderExtensions.HasIdentityOptions(builder, startsAt, incrementsBy);
break;
case DatabaseFacade db when db.IsMySql():
//MySqlPropertyBuilderExtensions;
break;
case DatabaseFacade db when db.IsOracle():
OraclePropertyBuilderExtensions.UseIdentityColumn(builder, startsAt, incrementsBy);
break;
default:
throw new NotImplementedException("Unknown database provider");
}
builder.ValueGeneratedOnAdd();
return builder;
}
更多技术细节
MySQL 版本:8.xx 操作系统:Windows Pomelo.EntityFrameworkCore.MySql 版本:5.0.0 Microsoft.AspNetCore.App 版本:5.0.0