2017-08-14 2 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"); 
} 

逆説的に、マイグレーションを追加した後、I update-databaseになったときに列がテーブルに追加されません。

実際には、移行に含まれていなかったカラムを手動で追加する必要がありました(add-migration以降)。

すべてのマイグレーションを削除し、現在のモデルからやり直すのは、私にはわかりませんが、どうにかして問題を解決することはできません。

+0

を「NULL可能」と「はdefaultValue」プロパティを供給してください私もこれはブールフィールドに*だけ*が起こることを決定的に言うことはできません。これは今度の場合です。 – Ortund

+0

私はweb.config内に別の接続文字列を* "LiveConnection" *としています。これは、\ SQLEXPRESSの代わりにリモートデータベースを対象としています。 – Ortund

+0

'update-database -verbose'は何を表示しますか? –

答えて

1

既にその特定のテーブルにレコードがある場合は、バックグラウンドでエラーが発生している可能性があります。

は、AddColumn関数文で

AddColumn("dbo.SupplierDocuments", "Alerted", c => c.Boolean(nullable: false, defaultValue: true)); 
関連する問題