所以我有这个代表我数据库中的表的POCO:
// 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 :(得分:1)
由于您在该特定表中已有记录,因此可能会在后台收到错误,表明可能会丢失数据。
尝试提供&#34; nullable&#34;和&#34; defaultValue&#34; AddColumn语句中的属性
AddColumn("dbo.SupplierDocuments", "Alerted", c => c.Boolean(nullable: false, defaultValue: true));