EFCore 数据迁移在添加第二个迁移时抛出错误

EFCore data migrations throws me an error when add the second migration

当我使用 efcore 在我的 asp.net 核心 3.1 应用程序上创建迁移时,它工作正常。

dotnet-ef migrations add Dev001 --project ..\Infrastructure\LetzIt.SqlServerDbService\LetzIt.SqlServerDbService.csproj --startup-project .\LetzIt.WebApi\LetzIt.WebApi.csproj

如果我只是添加一个新域 class(实体)并在我的模型配置构建器上进行配置,运行 命令:

dotnet-ef migrations add Dev002 --project ..\Infrastructure\LetzIt.SqlServerDbService\LetzIt.SqlServerDbService.csproj --startup-project .\LetzIt.WebApi\LetzIt.WebApi.csproj

输出给我这个错误:

ps:图片不好意思,这里的错误太丑了,看不懂。 主要线路是:

System.ArgumentException: At least one object must implement IComparable.

Failed to compare two elements in the array.

我对此进行了很多搜索,但没有找到任何内容。我自己没有使用任何 SORT。我的代码中不再有 OrderBy。

实体配置示例如下:

internal sealed class RoleConfiguration : IEntityTypeConfiguration<Role>
    {
        public void Configure(EntityTypeBuilder<Role> builder)
        {
            builder.ToTable("Role");

            BuildIndexes(builder);

            BuildProperties(builder);

            //TableSeed(builder);
        }

        private void BuildIndexes(EntityTypeBuilder<Role> builder)
        {
            builder.HasKey(m => m.Id);
            builder.HasIndex(m => m.Name).IsUnique();
        }

        private void BuildProperties(EntityTypeBuilder<Role> builder)
        {
            builder.Property(m => m.Id)
                .HasConversion(p => p.ToGuid(), p => new RoleId(p))
                .IsRequired();

            builder.Property(p => p.Name)
                .HasConversion(p => p.ToString(), p => new RoleName(p))
                .HasMaxLength(60);
        }

        private void TableSeed(EntityTypeBuilder<Role> builder)
        {
            builder.HasData(
                new Role(RoleIdConstants.Admin, RoleNameConstants.Admin),
                new Role(RoleIdConstants.Manager, RoleNameConstants.Manager));
        }
    }

我的每个 属性 实体都是 ValueObject,这就是我使用 HasConversion 的原因。

同样,第一次迁移工作正常。如果我现在删除我的迁移(在创建新实体之后)并再次创建 Dev001 迁移,它就可以了!!

如果我尝试连续进行 2 次迁移,那是行不通的。

在此先感谢大家。

更多技术细节

这是 EFCore 稳定版(什么??)上的错误。

link显示答案:

https://github.com/dotnet/efcore/issues/21576