Миграция данных EFCore выдает ошибку при добавлении второй миграции

Когда я создаю миграцию в своем приложении asp.net core 3.1 с помощью efcore, он работает нормально.

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

Если я просто добавлю новый класс (объект) Домена и настрою в моем конструкторе конфигурации модели и выполню команду:

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

Вывод дает мне эту ошибку:

введите описание изображения здесь

ps: извините за изображение, но ошибка здесь была слишком уродливой, чтобы ее можно было понять. Основные направления:

System.ArgumentException: хотя бы один объект должен реализовывать IComparable.

а также

Не удалось сравнить два элемента в массиве.

Я много искал об этом, и мне ничего не показалось. Я сам не использую СОРТИРОВКУ. В моем коде больше нет 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));
        }
    }

Каждое отдельное свойство моих сущностей - это ValueObjects, поэтому я использую метод HasConversion.

Опять же, первая миграция работает нормально. Если я удалю свои миграции сейчас (после создания нового объекта) и снова создаю миграцию Dev001, ЭТО РАБОТАЕТ !!

Просто не получается, если я попробую поставить 2 миграции подряд.

Заранее спасибо, ребята.

Дополнительные технические подробности

  • Версия EF Core: 3.1.5
  • Поставщик базы данных: Sql Server
  • Целевая платформа: ASP.NET Core 3.1
  • Операционная система: Windows 10
  • IDE: Visual Studio 2019 16.3

person Leandro De Mello Fagundes    schedule 10.07.2020    source источник
comment
вы ничего не сказали о базе данных обновлений. применили ли вы первую миграцию перед добавлением второй миграции?   -  person Mohammad Reza Rahimi    schedule 11.07.2020
comment
Привет, Мохаммед, да, я сделал. github.com/dotnet/efcore/issues/21576#issuecomment-656813464   -  person Leandro De Mello Fagundes    schedule 12.07.2020


Ответы (1)


Это ошибка стабильной (какой ??) версии EFCore.

Ссылка показывает ответ:

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

person Leandro De Mello Fagundes    schedule 13.07.2020