Код структуры 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.
Заявление завершено.
Просьба предложить решения.
Ответы
Ответ 1
Это потому, что вы допустили значения NULL
в этом столбце, а затем попытались сделать его недействительным. Затем он попытается перенести ваши существующие данные в новый столбец, который не может быть nullable, который сломается, потому что у вас уже есть значения NULL
.
Два решения:
1) Измените его на nullable
2) Дайте ему значение по умолчанию для элементов, которые не имеют значения.