2017-10-20 5 views
2

On m'a dit que l'activation des migrations automatiques pour EntityFramework est une mauvaise idée principalement dans la production. Faut-il vraiment les désactiver?Pourquoi devrions-nous désactiver les migrations automatiques dans EntityFramework

  1. Devons-nous les désactiver pour tous les environnements (développement, lancement, production)?
  2. Pouvez-vous décrire un autre processus de déploiement pour remplacer les migrations automatiques ?

Merci Daniel

+0

"On me l'a dit" - pourquoi n'avez-vous pas demandé à cette personne d'argumenter? – Evk

+0

Je lui ai demandé mais je ne suis pas convaincu. Voilà pourquoi je pose cette question. Pourriez-vous fournir une réponse à ma question? –

+0

C'est une question très ouverte, ici pourrait être divers facteurs pour vous, il ne peut pas convenir. l'un des facteurs serait le déploiement avez-vous un déploiement continu pour l'application? –

Répondre

2

Parler du point de vue Oracle SQL, il y a certains changements qui ne fonctionnent pas nécessairement hors de la boîte, de sorte que lorsque le code de migration est créé, quelques ajustements manuels doivent être faits .

Considérez ce qui suit:

Une colonne requise est ajoutée à une table existante. Afin de conserver les données existantes, je modifie la migration générée, pour créer une colonne nullable, assigner une valeur initiale, puis éditer la colonne comme non-nullable.

Il y a beaucoup d'autres choses où les migrations automatisées peuvent avoir des effets secondaires (inattendus) et je pense que c'est pire avec le fournisseur de données Oracle, mais il y aura quelques cas problématiques pour MS SQL.

En développement d'équipe, les migrations conflictuelles peuvent poser problème si plusieurs développeurs modifient le modèle de base de données.

1

Ce n'est pas une mauvaise ou une bonne idée, mais plutôt une bonne pratique à faire manual migration avec Entity Framework.

Pourquoi:

  • Vitesse d'émission: EF va essayer de détecter si le modèle est différent de la base de données, et de construire s'il est vrai.
  • Suppression de données sur une base de données: vous supprimez un modèle ou un groupe de données par erreur, cela détruirait la table/données dans la base de données. Dans l'environnement de production n'est pas très recommandé d'utiliser AutomaticMigrationDataLossAllowed. En d'autres termes, si vous définissez this à false, cela entraînera une exception Exception et peut entraîner un problème d'accessibilité. (AutomaticMigrationDataLossAllowed on MSDN)

Another good doc sur la migration cadre entité

L'utilisation principale de migration automatique est pour le code d'abord, il est permet au developpeur de produire plus « code » que la construction du DataBase. Il suffit de créer le modèle et de le lancer pour construire le Db, détruire ce que vous supprimez du modèle ou modifier la colonne.

+0

Merci pour votre réponse, vraiment utile. J'ai une question cependant.Je regardais un cours de Julie Lerman pluralsight sur les premières migrations de code EF et elle a suggéré d'exporter les migrations vers un script pour l'environnement de production, mais elle n'explique pas pourquoi. Que penses-tu de cela? –

+0

Je ne connais pas ce cours, mais je pense qu'elle préfère mettre à jour la base de données par script SQL et sans système de migration de cadre d'entité. – EchoZulu