Миграция данных EFCore выдает ошибку при добавлении второй миграции - PullRequest
0 голосов
/ 10 июля 2020

Когда я создаю миграцию в своем приложении 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, ЭТО РАБОТАЕТ !!

Это просто не сработает, если я попытаюсь разместить две миграции подряд.

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

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

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

1 Ответ

0 голосов
/ 13 июля 2020

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

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

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

...