Entity Framework Migrations: преобразовать десятичную?в десятичном виде со значением по умолчанию для нулей - PullRequest
0 голосов
/ 23 февраля 2012

Я получаю SqlCeException ... The column cannot contain null values. [ Column name = Subtotal когда я запускаю следующую миграцию Entity Framework.

public override void Up()
{
    AlterColumn("BuildingOrders", "Subtotal",
        c => c.Decimal(nullable: false, precision: 18, scale: 2));
}

Это правильный способ установить значение по умолчанию? Это кажется слишком простым:)

public override void Up()
{
    AlterColumn("BuildingOrders", "Subtotal",
        c => c.Decimal(nullable: false, precision: 18, scale: 2, defaultValue: 0));
}

Я попробовал это, увидев похожий вопрос для ruby ​​на рельсах.

1 Ответ

1 голос
/ 24 февраля 2012

Так не работает.Вы устанавливаете значение по умолчанию в базе данных, но оно не используется.Вы не можете определить свое свойство как обнуляемое в классе, когда сопоставленный столбец не обнуляемый.Значение по умолчанию в базе данных применяется, только если вы не вставляете какое-либо значение в этот столбец, но EF всегда вставляет значение во все столбцы, которые не созданы базой данных (в свою очередь, значения для столбцов, созданных базой данных, не могут быть определены в приложении), поэтому в этом случаевы определили ваше свойство как nullable, а EF вставляет null явно => исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...