6
votes

DevexPress XPO vs Nibernate VS Entity Framework: Problème de mise à niveau de la base de données

Quelle est la meilleure pratique pour la mise à niveau de la base de données en utilisant orm ( DevExpress XPO , Nibernate ou Cadre d'entité MS )?

Je commence un nouveau projet et je dois choisir un orm . Le processus de développement nécessite de libérer des constructions de test intermédiaires assez souvent et probablement que chaque construction aura des modifications de la structure de la base de données. Chaque nouvelle version doit mettre à niveau doucement la DB pour conserver les données actuelles.

Pour les anciennes solutions, je fournirais un ensemble de scripts SQL pour la mise à niveau de la base de données de v1 à v2 , de v2 à v3 , etc. et les exécuter séquentiellement.

Mais comment va-t-il fonctionner pour orm ? Devrais-je toujours écrire des scripts SQL pour mettre à niveau la DB?

Je comprends que simple l'ajout de nouveaux champs ne causerait de problème (par exemple, voir Méthode UpdatesCHEMA () < / a> pour xpo), mais si je dois diviser une table et réaffecter des enregistrements actuels en 2 nouvelles tables?


1 commentaires

Comme cette question est assez ancienne, voici quelques rafraîchissements: Les outils de migration de schéma de base de données du noyau EF sont très puissants et faciles à utiliser.


4 Réponses :


0
votes

La plupart des solutions de migration peuvent gérer des tâches simples, comme l'ajout d'une nouvelle colonne, une relation ou une nouvelle colonne, mais ne fonctionneront pas lorsque vous renommez une colonne (est-ce une ajout? ou un supprimer suivant un ajout qui est égal à une renommée? Que devriez-vous faire avec les données dans ce cas?)

Les trois solutions ont une prise en charge des migrations de base, XPO vous permet même d'exécuter vos propres scripts dans la partie du processus (pour insérer des données statiques / tests / conants, etc.)

Il y a aussi le Projet MIGRATORTOTNET que vous pouvez utiliser et ne pas compter sur une ORM spécifique caractéristique concernant les migrations.

Personnellement, j'utiliserais la migration automatique uniquement dans l'environnement DEV / TEST et aurait un ensemble complet de scripts de mise à niveau lors de l'exécution de la base de données spécifique au client pour dire la mise à niveau de V1 à V2.


2 commentaires

Merci pour la réponse rapide. J'utilise Outils Apex SQL pour générer un script SQL pour la mise à niveau. Mais ma préoccupation est que les scripts SQL pour la mise à niveau tue l'indépendance de l'ORM du type de base de données.


Mais se souvenir de l'ormes est juste là pour résoudre un autre problème, c'est la lecture de / à la base de données. La mise à niveau du schéma n'est qu'un autre problème qui est le mieux géré par un autre outil, étant des outils de migrateur.net ou externes tels que Apex SQL Tools.



0
votes

Comment ça va travailler pour ormes? Devrais-je toujours écrire des scripts SQL à Mettez à niveau le DB?

Une réponse claire de cette question devrait être sur le thread Stackexchange de programmeur - Quels sont les critères d'évaluation d'un orm pour.net? , j'ai eu une réponse simple pour votre question que vous avez posée et correspond à mon expérience avec ORM tout en développant un projet avec cadre d'entité et code Smith Modèles ORM.

Comment l'orèse gère-t-il les changements dans le modèle de données? Et si je dois diviser une table et réaffecter des enregistrements actuels en 2 nouvelles tables?

Certains peuvent mettre à jour le DB automatiquement dans une certaine mesure, d'autres Ne faites rien et vous devrez faire le bon travail vous-même; autre fournir un cadre pour la gestion des changements qui vous permet de contrôler la base de données mises à jour. Cela signifie que tous les deux jours Quelqu'un doit passer une heure à mettre à jour le modèle pour ajouter une table ou modifier des fichiers de données qui sont changer

ref:
https://softwareEngineering.stackexchange.com/ Questions / 6543 / Quels sont-les-avantages-de-la base de données-abstraction-by-orm
https: //softwareEngineering.stackexchange.com/questions/41739/Best-Arguments-for-AgainSt-Introducing-orm-technology-into-a-companies-dev-proce/41833#41833


0 commentaires

6
votes

Je ne peux pas commenter sur l'autre orm, mais j'ai utilisé Devexpress XPO pour une demande de trésorerie d'entreprise depuis 2007. Le schéma change un peu à chaque version, mais il y a eu également de gros changements de schéma au fil des ans. Une version quelque peu étendue du mécanisme de mise à niveau XPO par défaut s'est confortablement pris en charge pour tous les changements.

Il y a de bonnes informations de base ici A> À propos de la mise à niveau des applications XPO. P>


1 commentaires

Ce que vous avez décrit concerne XAF, et non XPO spécifiquement.



-1
votes

Si vous demandez - quelle est la meilleure pratique pour la mise à niveau de la DB à l'aide de ORM - ma réponse est la suivante: ne l'utilisez pas si votre application est plus qu'une application amaigrissante.

Il existe de nombreux scénarios où de nombreux ormes sont incapables de fournir un soutien à vos besoins spécifiques de la base de données, par exemple. Dans la création de procédures stockées, créez des indices et des vues ou même des vues indexées / des tables matérialisées sans écrire des scripts SQL. Des problèmes tels que l'ajout d'une nouvelle colonne non nullable à une table existante sont beaucoup plus difficiles à résoudre dans le code de migration ORM que par écrit des scripts SQL.

Les outils actuels tels que les outils de données Visual Studio gèrent ce type de problèmes de manière meilleure.


0 commentaires