Подтвердить что ты не робот

Код структуры Entity Framework сначала делает столбец недействительным

Я использую EF-код для моего проекта. У меня есть следующий код в моей DataModel

[HiddenInput(DisplayValue = false)]        
public DateTime? PasswordDate { get; set; }

Чтобы сделать это не-nullable, я удалил '?' и выполнила команду Add-Migration из консоли диспетчера пакетов. был создан следующий файл миграции.

  public partial class PasswordDate : DbMigration
{
    public override void Up()
    {
        AlterColumn("dbo.CertificateInfoes", "PasswordDate", c => c.DateTime(nullable: false));
    }

    public override void Down()
    {
        AlterColumn("dbo.CertificateInfoes", "PasswordDate", c => c.DateTime());
    }
}

Но когда я запускаю команду Update-Database:

Update-Database -SourceMigration 201309020721215_PasswordDate

Я получаю следующую ошибку: не могу вставить значение NULL в столбец 'PasswordDate', table ''; столбец не допускает нулей. Ошибка UPDATE. Заявление завершено.

Просьба предложить решения.

4b9b3361

Ответ 1

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

Два решения:

1) Измените его на nullable
2) Дайте ему значение по умолчанию для элементов, которые не имеют значения.