我试图将我的一个列(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的值总是为假。
答案 0 :(得分:3)
不要在CreateTable
中添加该列,并尝试以这种方式添加:
public override void Up()
{
//...
AddColumn("dbo.TestDB", "IsActive", c => c.Boolean(nullable: false, defaultValue: true));
}
另一种变体是在实体的构造函数中初始化该属性:
public YourEntity()
{
IsActive=true;
}