DefaultValue for Entity Framework迁移如何工作?

时间:2015-01-17 02:02:33

标签: c# entity-framework default-value ef-migrations

我试图将我的一个列(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");
    }

即使这样做,每当我在DB中创建记录时,IsActive的值总是为假。

1 个答案:

答案 0 :(得分:3)

不要在CreateTable中添加该列,并尝试以这种方式添加:

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

另一种变体是在实体的构造函数中初始化该属性:

public YourEntity()
{ 
   IsActive=true;
}