Как работает DefaultValue для миграции Entity Framework?

1

Я пытаюсь установить значение по умолчанию для одного из моих столбцов (IsActive) на значение по умолчанию следующим образом, но оно никогда не работает. Я попытался использовать как DefaultValue, так и DefaultValueSql самостоятельно, и, как вы можете видеть ниже, я пытаюсь использовать их вместе. Любая идея, если я что-то упустил?

public partial class Initial : DbMigration
{
    public override void Up()
    {
        CreateTable(
            "dbo.TestDB",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Name = c.String(nullable: false, maxLength: 64),
                    Description = c.String(nullable: false, storeType: "ntext"),
                    Comment = c.String(maxLength: 255),
                    IsActive = c.Boolean(nullable: false, defaultValueSql: "1", defaultValue: true),
                    CreatedOn = c.DateTimeOffset(nullable: false, precision: 7),
                    CreatedBy = c.String(maxLength: 128),
                    ModifiedOn = c.DateTimeOffset(nullable: false, precision: 7),
                    ModifiedBy = c.String(maxLength: 128),
                })
            .PrimaryKey(t => t.GlobalKpiId);

    }

    public override void Down()
    {
        DropTable("dbo.TestDB");
    }

Даже после этого, когда я создаю записи в БД, значение IsActive всегда ложно.

Теги:
entity-framework
default-value
ef-migrations
code-first-migrations

1 ответ

3
Лучший ответ

Не добавляйте этот столбец в CreateTable и пытайтесь добавить его таким образом:

public override void Up()
{ 
  //...   
  AddColumn("dbo.TestDB", "IsActive", c => c.Boolean(nullable: false, defaultValue: true));
} 

Другой вариант - инициализировать это свойство в конструкторе вашего объекта:

public YourEntity()
{ 
   IsActive=true;
} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню