1.DBfirst,根据已有用户结构生成实体
Scaffold-DbContext "User ID=postgres;Password=123456;Host=xxx.xx.xx.x;Port=5432;Database=xxx" Npgsql.EntityFrameworkCore.PostgreSQL -OutputDir Models
Scaffold-DbContext "数据库连接字符串" EF组件名(Microsoft.EntityFrameworkCore.SqlServer/Pomelo.EntityFrameworkCore.MySql/等等) -OutputDir 输出文件夹名称
2.codefirst 生成ids4身份资源等表结构
dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb
dotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb
3.将数据迁移文件和文件夹生成在类库中
dotnet ef --startup-project ../DCIAuth migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb
dotnet ef --startup-project ../DCIAuth migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb
因为类库不能启动,所以命令前要加上--startup-project
同时startup中builder.UseNpgsql(connectionString, sql => sql.MigrationsAssembly("类库名"));
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseNpgsql(connectionString,
sql => sql.MigrationsAssembly("Infrastructure"));
})
// this adds the operational data from DB (codes, tokens, consents)
.AddOperationalStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseNpgsql(connectionString,
sql => sql.MigrationsAssembly("Infrastructure"));
// this enables automatic token cleanup. this is optional.
options.EnableTokenCleanup = true;
options.TokenCleanupInterval = 30;
});