J'ai ce POCO qui représente une table dans ma base de données:Pourquoi une colonne booléenne n'est pas persistante dans ma base de données avec EF Migrations?
// 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)
{
}
}
j'ai ajouté la propriété Alerted
dans une migration plus tard que je l'ai fait une mise à jour de la base de données avec:
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");
}
Paradoxalement, la colonne n'est pas ajoutée à la table lorsque I update-database
après l'ajout de la migration. En fait, j'ai dû ajouter manuellement la colonne car elle n'était pas incluse dans la migration par défaut après add-migration
. À part de supprimer toutes les migrations et de recommencer avec le modèle actuel (ce que l'expérience m'a montré n'est pas garanti pour résoudre le problème de toute façon), comment puis-je faire fonctionner cela et pourquoi cela ne fonctionne-t-il pas?
Je ne peux même pas dire de façon concluante que cela se produit * uniquement * avec des champs booléens. C'est juste le cas cette fois. – Ortund
J'ai une autre chaîne de connexion dans web.config appelée * "LiveConnection" * qui cible une base de données distante au lieu de. \ SQLEXPRESS – Ortund
Que montre 'update-database -verbose'? –