在 IdentityServer4IdentityCore 快速入门中更新数据库
Updating Database in IdentityServer4IdentityCore Quickstart
我有一个 asp.net mvc 项目 运行 和另一个 IdentityServer4(包括 Identity Core 支持的快速入门),但我无法更新数据库,也无法对其进行播种。我正在与 Core 合作。
我关注了this tuto
所以首先,我无法更新 de DB,我收到了这个错误:
System.InvalidOperationException: To change the IDENTITY property of a
column, the column needs to be dropped and recreated. at
Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(AlterColumnOperation
operation, IModel model, MigrationCommandListBuilder builder) at
Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.<>c.<.cctor>b__71_4(MigrationsSqlGenerator
g, MigrationOperation o, IModel m, MigrationCommandListBuilder b)
at
Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(MigrationOperation
operation, IModel model, MigrationCommandListBuilder builder) at
Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(MigrationOperation
operation, IModel model, MigrationCommandListBuilder builder) at
Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList1 operations, IModel model) at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(IReadOnlyList
1
operations, IModel model) at
Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpSql(Migration
migration) at
Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.<>c__DisplayClass15_2.b__2()
at
Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String
targetMigration) at
Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String
targetMigration, String contextType) at
Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String
targetMigration, String contextType) at
Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at
Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action
action) To change the IDENTITY property of a column, the column needs
to be dropped and recreated.
第二件事,我意识到 startup.cs 中的种子方法不起作用,种子 return 是错误的
try
{
var seed = args.Contains("/seed");
if (seed)
{
args = args.Except(new[] { "/seed" }).ToArray();
}
var host = CreateHostBuilder(args).Build();
if (seed)
{
Log.Information("Seeding database...");
var config = host.Services.GetRequiredService<IConfiguration>();
var connectionString = config.GetConnectionString("DefaultConnection");
SeedData.EnsureSeedData(connectionString);
Log.Information("Done seeding database.");
return 0;
}
我不知道是否有人已经使用过该教程,但非常感谢您的帮助 :p Thx
我认为您需要删除数据库并重新创建它,然后才能正常工作。
这个 question 的答案很好地总结了 EntityFramework 内核将给您带来的生产痛苦。
我有一个 asp.net mvc 项目 运行 和另一个 IdentityServer4(包括 Identity Core 支持的快速入门),但我无法更新数据库,也无法对其进行播种。我正在与 Core 合作。
我关注了this tuto
所以首先,我无法更新 de DB,我收到了这个错误:
System.InvalidOperationException: To change the IDENTITY property of a column, the column needs to be dropped and recreated. at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(AlterColumnOperation operation, IModel model, MigrationCommandListBuilder builder) at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.<>c.<.cctor>b__71_4(MigrationsSqlGenerator g, MigrationOperation o, IModel m, MigrationCommandListBuilder b)
at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder) at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder) at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList1 operations, IModel model) at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(IReadOnlyList
1 operations, IModel model) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpSql(Migration migration) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.<>c__DisplayClass15_2.b__2() at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) To change the IDENTITY property of a column, the column needs to be dropped and recreated.
第二件事,我意识到 startup.cs 中的种子方法不起作用,种子 return 是错误的
try { var seed = args.Contains("/seed"); if (seed) { args = args.Except(new[] { "/seed" }).ToArray(); }
var host = CreateHostBuilder(args).Build(); if (seed) { Log.Information("Seeding database..."); var config = host.Services.GetRequiredService<IConfiguration>(); var connectionString = config.GetConnectionString("DefaultConnection"); SeedData.EnsureSeedData(connectionString); Log.Information("Done seeding database."); return 0; }
我不知道是否有人已经使用过该教程,但非常感谢您的帮助 :p Thx
我认为您需要删除数据库并重新创建它,然后才能正常工作。
这个 question 的答案很好地总结了 EntityFramework 内核将给您带来的生产痛苦。