Comment recréer une firebase database dans EF si mon modèle change?

J’ai créé un DbContext comme ceci:

public class myDB : DbContext { public DbSet Parties { get; set; } public DbSet Bookings { get; set; } } 

Cela a généré ma firebase database et les deux tables ci-dessus.

J’ai alors décidé d’append un autre DbSet au mixage et j’ai eu une erreur:

le modèle de sauvegarde du contexte ‘Parti’ a changé depuis la création de la firebase database

Je suis conscient des correctifs modelbuilder.IncludeMetadataInDatabase = false; aide de modelbuilder.IncludeMetadataInDatabase = false; et Database.SetInitializer(null);

1) Quelle est la bonne façon d’append mes nouvelles classes au contexte et de les générer dans la firebase database?

2) Dans mes tentatives futiles de résoudre ce problème moi-même, j’ai supprimé les tables et essayé de réexécuter l’application sans succès. J’ai ensuite supprimé la firebase database complète, puis réexécutée, sans générer de nouveau la firebase database. Comment puis-je partir de zéro? Existe-t-il un cache quelque part?

Je crois que tu cherches:

 Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); 

À partir de EF 4.1 et ci-dessus.

Notez que cela suppose que vous êtes autorisé à même supprimer votre firebase database. Je le fais localement pour faciliter le développement, mais je le désactive lors de la mise en scène / de la production (je fais une comparaison manuelle des schémas et j’applique mes modifications).

A propos, pour tester, si vous devez forcer la recréation de la firebase database, vous pouvez faire:

 using (var context = new ClubmansGuideDB()) { context.Database.Initialize(force: true); } 

(en using si vous n’avez pas déjà une référence à votre firebase database)

Vous pouvez laisser Entity Framework recréer la totalité de la firebase database à l’aide d’un Database Initializer ou, si vous souhaitez migrer des données, vous pouvez consulter la rubrique Migration par code d’abord.

Les éléments suivants recréeraient votre firebase database lorsque le modèle serait modifié:

 Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); 

Essayez de mettre cela dans votre méthode Global.asax.cs Application_Start ().

 Database.SetInitializer(null); 

Pour réinitialiser la firebase database à partir de zéro lors de l’exécution de l’application, créez une classe comme celle-ci.

 //Where myDB is your context public class EntityBase: DropCreateDatabaseAlways { } 

Ensuite, dans votre méthode Application_Start (), vous pouvez le faire

 Database.SetInitializer(new EntityBase());