在IdentityServer4IdentityCore快速入门中更新数据库

问题描述

我有一个与另一个IdentityServer4(包含Identity Core支持快速入门)一起运行的asp.net mvc项目,但是我无法更新数据库,也无法为它添加种子。我正在使用Core。

我关注了this tuto

因此,首先,我无法更新de DB,出现此错误

system.invalidOperationException:更改对象的IDENTITY属性 列,则需要删除该列并重新创建。在 Microsoft.EntityFrameworkCore.Migrations.sqlServerMigrationssqlGenerator.Generate(AlterColumnoperation 操作,IModel模型,MigrationCommandListBuilder构建器)位于 Microsoft.EntityFrameworkCore.Migrations.MigrationssqlGenerator。 c。 b__71_4(MigrationssqlGenerator g,Migrationoperation o,IModel m,MigrationCommandListBuilder b)
在 Microsoft.EntityFrameworkCore.Migrations.MigrationssqlGenerator.Generate(Migrationoperation 操作,IModel模型,MigrationCommandListBuilder构建器)位于 Microsoft.EntityFrameworkCore.Migrations.sqlServerMigrationssqlGenerator.Generate(Migrationoperation 操作,IModel模型,MigrationCommandListBuilder构建器)位于 Microsoft.EntityFrameworkCore.Migrations.MigrationssqlGenerator.Generate(IReadOnlyList 1 operations,IModel model) at Microsoft.EntityFrameworkCore.Migrations.sqlServerMigrationssqlGenerator.Generate(IReadOnlyList 1 操作,IModel模型) Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpsql(迁移 迁移) Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator。 c__displayClass15_2.b__2() 在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串 targetMigration) Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration,字符串contextType)位于 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration,字符串contextType)位于 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase。 c__displayClass0_0。 b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作 操作)要更改列的IDENTITY属性,该列需要 删除并重新创建。

第二件事,我意识到startup.cs中的seed方法无效,种子返回false

尝试 { var seed = args.Contains(“ / seed”); 如果(种子) { args = args.Except(new [] {“ / seed”})。ToArray(); }

            var host = CreateHostBuilder(args).Build();

            if (seed)
            {
                Log.@R_753_4045@ion("seeding database...");
                var config = host.Services.GetrequiredService<IConfiguration>();
                var connectionString = config.GetConnectionString("DefaultConnection");
                SeedData.EnsureSeedData(connectionString);
                Log.@R_753_4045@ion("Done seeding database.");
                return 0;
            }

我不知道是否有人已经使用过该老师,但确实会有一些帮助:p Thx

解决方法

我认为您需要删除数据库并重新创建它,然后它才能工作。

这个question的答案很好地总结了EntityFramework核心将给您的生产带来的痛苦。