2017-08-21 1 views
0

Je veux utiliser la technique Code First de EF6 mais quand j'ai apporté des modifications à la table, elle supprime la base de données et la recrée, effaçant toutes les données. Y a-t-il un moyen d'empêcher cela de se produire?Mise à jour de la base de données de CodeFirst dans EF6 sans effacer les données

Mon code:

Database.SetInitializer<EmployeeDb>(new DropCreateDatabaseIfModelChanges<EmployeeDb>()); 
+0

Vous avez également donné la réponse. Votre code indique cela, il laisse tomber et crée la base de données si vous changez votre modèle. –

+0

Je souhaite savoir s'il existe une alternative à ceci où je peux utiliser le code d'abord mais sur la table de mise à jour n'ai pas à recréer la base de données. –

+1

vous pouvez utiliser les premières migrations de code https://msdn.microsoft.com/en-us/library/jj591621(v=vs.113).aspx –

Répondre

0

Ce sont les stratégies de base de données dans le code initilization première approche:

  1. CreateDatabaseIfNotExists: Ce est initialiseur par défaut. Comme son nom l'indique, il créera la base de données s'il n'en existe aucune selon la configuration. Toutefois, si vous modifiez la classe de modèle, puis exécutez l'application avec cet initialiseur, elle lèvera une exception.
  2. DropCreateDatabaseIfModelChanges: Cet initialiseur supprime une base de données existante et crée une nouvelle base de données si vos classes de modèle (classes d'entités) ont été modifiées. Vous n'avez donc pas à vous préoccuper de la maintenance de votre schéma de base de données lorsque vos classes de modèles changent.
  3. DropCreateDatabaseAlways: Comme son nom l'indique, cet initialiseur supprime une base de données existante chaque fois que vous exécutez l'application, que vos classes de modèles aient été modifiées ou non. Cela sera utile, quand vous voulez une nouvelle base de données, chaque fois que vous lancez l'application, comme lorsque vous développez l'application.
  4. Custom DB Initializer: Vous pouvez également créer votre propre initialiseur personnalisé, si l'un de ces éléments ne répond pas à vos besoins ou si vous souhaitez effectuer un autre processus qui initialise la base de données à l'aide de l'initialiseur ci-dessus.

Here, il peut vous donner une idée générale et comment utiliser l'une de ces approches.

Grâce à vos commentaires CreateDatabaseIfNotExists vous aide. Avec cette approche lorsque vous ajoutez ou supprimez vos classes de modèle, votre db sera mis à jour et vos données seront stables.

Here vous pouvez trouver des exemples à la fois constructeur Context et config fichier

Another topic about this sur stackoverflow.