簡體   English   中英

DefaultValue for 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");
    }

即使這樣做,每當我在DB中創建記錄時,IsActive的值始終為false。

不要在CreateTable添加該列並嘗試以這種方式添加它:

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

另一個變體是在實體的構造函數中初始化該屬性:

public YourEntity()
{ 
   IsActive=true;
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM