如何解决在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(IReadOnlyList1 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.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核心将给您的生产带来的痛苦。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。