Обновление ядра EF после миграции завершается неудачно из-за смены типа nullable на enum - PullRequest
0 голосов
/ 27 февраля 2019

Я использую ядро ​​EF 2.2.1 и застрял со следующей ошибкой при обновлении до последней миграции:

System.Data.SqlClient.SqlException (0x80131904): невозможновставить значение NULL в столбец 'CountryCode', таблица 'context.dbo.User';столбец не допускает пустых значений.ОБНОВЛЕНИЕ не удается.Оператор был прерван.

Сообщение ясно и из-за изменения сущности, до миграции оно было:

public class RegistrationUser : IHaveId, ISearchable
{
    public int Id { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? CountryCode { get; set; }
    // other properties
}

, затем тип CountryCode изменился наenum (CountryCode)

public class RegistrationUser : IHaveId, ISearchable
{
    public int Id { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public CountryCode CountryCode { get; set; }
    // other properties
}

Конфигурация объекта не изменилась, даже если я попытался установить значение по умолчанию для перечисления (все та же ошибка, что и выше):

public class UserConfiguration: IEntityTypeConfiguration<User>
{
    public void Configure(EntityTypeBuilder<User> builder)
    {
        builder.HasKey(e => e.Id);
        builder.Property(e => e.Id)
            .HasColumnName("Id").ValueGeneratedOnAdd();
        builder.Property(e => e.Email).HasMaxLength(250);
        builder.Property(e => e.Password).HasMaxLength(250);
        builder.Property(e => e.FirstName).HasMaxLength(100);
        builder.Property(e => e.LastName).HasMaxLength(100);
        builder.Property(e => e.CountryCode).HasDefaultValue(CountryCode.Unknown);
        // other configurations
    }
}

Миграция добавляется, но соответствующее обновление завершается неудачно с помощью этой команды в консоли диспетчера пакетов

обновление базы данных dotnet ef

Вопрос заключается в том, как правильно изменить этот тип, имеяв сгенерированной таблице столбец без значения NULL со значением по умолчанию (настроенным в EF core EntityTypeConfiguration)

...