【问题标题】:Updating Database in IdentityServer4IdentityCore Quickstart在 IdentityServer4IdentityCore 快速入门中更新数据库
【发布时间】:2020-08-18 12:45:26
【问题描述】:

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

我关注了this tuto

首先,我无法更新 de DB,我收到了这个错误:

System.InvalidOperationException:更改 IDENTITY 属性 列,需要删除并重新创建该列。在 Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(AlterColumnOperation 操作、IModel 模型、MigrationCommandListBuilder 构建器)在 Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.c.<.cctor>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(IReadOnlyList1 操作,IModel 模型)在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpSql(迁移 迁移)在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.c__DisplayClass15_2.b__2() 在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串 目标迁移)在 Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(字符串 targetMigration,字符串 contextType)在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(字符串 targetMigration,字符串 contextType)在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_0.<.ctor>b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作 action) 要更改列的 IDENTITY 属性,该列需要 被删除并重新创建。

第二件事,我意识到startup.cs中的seed方法不起作用,seed返回一个false

试试 { var 种子 = 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

【问题讨论】:

    标签: c# asp.net-identity identityserver4


    【解决方案1】:

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

    question 的答案很好地总结了 EntityFramework 核心在生产中会给你带来的痛苦。

    【讨论】:

    • 我已经多次使用此选项,但从未成功。我要去看看你的链接,也许它会工作。感谢您的回复;)
    • 如果您删除数据库,那么它应该可以工作。如果不是,听起来您有几个独立的迁移都试图更改同一个数据库列。
    • 是的,我确实进行了另一次迁移,导致一切都无法正常工作!谢谢
    猜你喜欢
    • 2018-09-16
    • 2013-12-13
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多