J'ai programmé récemment avec Entity Framework 4.1 Code First et je l'adore pour le développement, mais avec seulement un plan final et une liste de fonctionnalités changeant rapidement, je modifie constamment la classe / base de données pour répondre aux besoins des applications.
En cours de développement, il n'y a pas de données en direct et je peux facilement supprimer toute la base de données afin qu'elle soit recréée avec le nouveau schéma cependant, évidemment, en direct - c'est très mauvais!
Les seules solutions que je peux voir sont soit de supprimer la table de métadonnées et de maintenir manuellement la base de données synchronisée, soit de supprimer et de réamorcer.
Personnellement, je préfère la première méthode car je pense qu'il sera beaucoup plus facile d'ajouter une colonne / table que de recréer et de migrer des données, mais, sauf si j'ai oublié quelque chose, cela s'éloigne complètement de Code First.
La question est donc vraiment la suivante: Code First concerne-t-il uniquement le développement initial et quelle est la bonne stratégie de gestion des FE pour un environnement de production?
la source
Réponses:
Mon opinion est que la création de base de données automatique de code first est uniquement pour le développement. J'ai répondu à des questions similaires sur Stack Overflow où j'ai décrit à la fois comment mettre à niveau la base de données et pourquoi les fonctionnalités automatiques sont-elles mauvaises en production:
La mise à niveau de la base de données est une tâche semi-manuelle. Il ne devrait pas y avoir de magie automatique non testée - de plus, EF 4.1 ne dispose actuellement d'aucune magie de ce type (il n'y a que quelques présentations sur les fonctionnalités sur lesquelles l'équipe ADO.NET travaille).
Vous pouvez également vérifier cette question pour mieux comprendre comment les sites Web sont mis à niveau.
la source
Gérez les scripts de mise à niveau .
Dans la base de données elle-même, conservez une table dans laquelle un enregistrement est conservé avec la version du schéma.
Lorsque vous démarrez l'application, il détecte la version par rapport à la version censée être utilisée par les binaires. S'il diffère, il exécute (ou demande à l'utilisateur) les scripts de mise à niveau.
N'oubliez pas de sauvegarder d'abord la base de données.
la source
La question est en quelque sorte imparfaite en ce qu'elle établit des connexions entre le modèle de programmation et l'environnement d'exécution là où il n'y en a pas.
Le code d'abord est principalement un pilote de vitesse de développement et n'est pas vraiment connecté au système d'exécution.
En production, vous aurez correctement un paramètre de configuration qui refuse au runtime la possibilité de supprimer / mettre à jour le modèle db.
la source