2017-08-14 50 views
1

所以我有這個POCO代表我的數據庫中的表:爲什麼使用EF遷移不能將一個布爾列持久保存到我的數據庫中?

// BaseDataObject includes the Id property among others. 
public class SupplierDocument : BaseDataObject 
{ 
    public int SupplierId { get; set; } 
    public string Name { get; set; } 
    public DateTime ExpiryDate { get; set; } 
    public string MimeType { get; set; } 
    public byte[] Document { get; set; } 
    public bool Alerted { get; set; } 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 

    public DbSet<PaymentTerm> PaymentTerms { get; set; } 
    public DbSet<Supplier> Suppliers { get; set; } 
    public DbSet<SupplierDocument> SupplierDocuments { get; set; } 
    public DbSet<SupplierService> SupplierServices { get; set; } 
    public DbSet<Voucher> Vouchers { get; set; } 


    public ApplicationDbContext() 
     : base("DevConnection", throwIfV1Schema: false) 
    { 
    } 
} 

我加在後面的遷移Alerted財產我已經做了一個更新到數據庫:

public override void Up() 
{ 
    AddColumn("dbo.Suppliers", "Area", c => c.String()); 
    AddColumn("dbo.Vouchers", "IssuedFor", c => c.String()); 
    AddColumn("dbo.SupplierDocuments", "Alerted", c => c.Boolean()); 
} 

public override void Down() 
{ 
    DropColumn("dbo.Vouchers", "IssuedFor"); 
    DropColumn("dbo.Suppliers", "Area"); 
    DropColumn("dbo.SupplierDocuments", "Alerted"); 
} 

矛盾的是,當我在添加遷移後添加到update-database時,該列不會被添加到表中。

事情是,我不得不手動添加列,因爲它不包括在add-migration之後的默認遷移中。

缺少刪除所有的遷移並重新開始使用當前模型(經驗告訴我不能保證解決問題),我怎麼能做到這一點,爲什麼它不工作呢?

+0

性能我甚至不能說得出結論,出現這種情況只有* *與布爾字段。這次就是這種情況。 – Ortund

+0

我在web.config中有另一個名爲*「LiveConnection」*的連接字符串,它的目標是一個遠程數據庫而不是。\ SQLEXPRESS – Ortund

+0

'update-database -verbose'顯示什麼? –

回答

1

由於您已經在該特定表中有記錄,因此您可能會在後臺發現錯誤,提示可能會丟失數據。

嘗試提供「可空」和「默認值」,在AddColumn聲明

AddColumn("dbo.SupplierDocuments", "Alerted", c => c.Boolean(nullable: false, defaultValue: true)); 
相關問題