Entity Framework 迁移的默认值如何工作?
How does the DefaultValue for Entity Framework Migrations work?
我正在尝试将我的其中一个列 (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 的值始终为 false。
不要在 CreateTable
中添加该列并尝试以这种方式添加:
public override void Up()
{
//...
AddColumn("dbo.TestDB", "IsActive", c => c.Boolean(nullable: false, defaultValue: true));
}
另一种变体是在实体的构造函数中初始化 属性:
public YourEntity()
{
IsActive=true;
}
我正在尝试将我的其中一个列 (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 的值始终为 false。
不要在 CreateTable
中添加该列并尝试以这种方式添加:
public override void Up()
{
//...
AddColumn("dbo.TestDB", "IsActive", c => c.Boolean(nullable: false, defaultValue: true));
}
另一种变体是在实体的构造函数中初始化 属性:
public YourEntity()
{
IsActive=true;
}