Я использую ядро 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)