How can set AUTO_INCREMENT initial value for primary key using Pomelo.EntityFrameworkCore.MySql?.
like this How to set initial value and auto increment in MySQL?
CREATE TABLE my_table (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
) AUTO_INCREMENT = 10000;
The issue
I need to create a table with bigint primary key starting at 10000.
Generated script
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**
My C# static method for Identity column
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;
}
Further technical details
MySQL version: 8.x.x Operating system: Windows Pomelo.EntityFrameworkCore.MySql version: 5.0.0 Microsoft.AspNetCore.App version: 5.0.0