Lors de l'utilisation d'un ORM (spécifiquement NHibernate), comment le refactoring des données est-il géré? Je veux dire, si les objets de données changent de telle sorte que le schéma de base de données relationnel sous-jacent change, l'ORM offre-t-il de l'aide dans les mises à niveau/rétrogradations de schéma dans la base de données? Que diriez-vous de la migration des données existantes vers le nouveau schéma? Je suis en train de prendre une décision sur l'utilisation d'un ORM et j'ai une exposition très limitée. S'il vous plaît, supportez-moi si les questions sont naïves.NHibernate, ORM: comment le refactoring est-il géré? données existantes?
Répondre
Dans NHibernate, vous pouvez utiliser la classe SchemaUpdate pour apporter des modifications supplémentaires à votre schéma. (Les modifications additives incluraient de nouvelles tables, de nouvelles colonnes, etc., mais pas des suppressions.) SchemaUpdate est destiné à des fins de développement et n'est pas destiné à être exécuté en production. Je recommande fortement de consulter un outil de migration SQL tel que Tarantino, dbdeploy.net, RikMigrations ou similaire.
Les outils de migration sont disponibles en deux versions - basées sur des scripts SQL (Tarantino et dbdeploy.net) et basées sur du code (migrations RikMigrations et Rails). Avec un outil de migration basé sur le code, vous écrivez vos migrations en utilisant du code écrit en C#, VB, Ruby, ... Les outils basés sur des scripts SQL prennent un ensemble ordonné de scripts SQL. Dans les deux cas, l'outil de migration exécute toutes les migrations sur votre base de données qui n'ont pas été exécutées auparavant. (En général, une table migrations énumère les scripts qui ont été exécutés et permet à l'outil de comprendre qui doivent encore être exécuté.) Les scripts SQL sont générés via:
// SchemaUpdate.Execute(bool script, bool doUpdate)
new SchemaUpdate(cfg).Execute(true, false);
puis édités au goût. Ou vous pouvez générer un nouveau schéma en utilisant SchemaExport de NHibernate et en utilisant un outil de comparaison de schéma tel que Microsoft Visual Studio pour Ultimate Now avec extension Mayo (aka DataDude) ou RedGate SQL Compare. Vous auriez besoin d'écrire des scripts de transformation à la main car il n'y a aucun moyen en général pour que l'outil de migration SQL sache que cette colonne Foo char (1) remplie de T/F devrait être transformée dans cette colonne Bar bit. Personnellement, je préfère les outils de migration basés sur un script SQL, car je peux générer les différences de schéma à l'aide d'un outil, puis modifier au goût plutôt que d'avoir à faire rouler la migration entière en utilisant C# ou un langage similaire.
- 1. nhibernate fluide m-à-m avec la colonne
- 2. Données empiriques sur le refactoring?
- 3. Création d'un modèle d'objet géré à partir de données de base XSD-iPhone existantes
- 4. Comment afficher les données existantes dans les données de base?
- 5. Comment intégrer/mélanger le code géré et non géré
- 6. Ecriture QFile/QDataStream sur des données existantes
- 7. Meilleure façon d'incorporer des données existantes
- 8. Comment fonctionne le -m en Perl
- 9. Refactoring de table DB
- 10. Comment supprimer^M
- 11. Comment remplir ces champs à partir de données existantes?
- 12. Comment les données existantes doivent-elles être modifiées ou supprimées dans GAE?
- 13. Comment remapper la commande Emacs M-d dans la macro M-b, M-d?
- 14. Classes sérialisables et refactoring de noms
- 15. Refactoring de before_filters dans le contrôleur
- 16. Refactoring - System.OutOfMemoryException
- 17. rspec refactoring?
- 18. refactoring question
- 19. mysql codeigniter enregistrement actif m: m suppression
- 20. Les instructions de journal empêchent le refactoring: comment y remédier?
- 21. Date d'émission en m²
- 22. refactoring onglets
- 23. Refactoring Javascript
- 24. Comment détacher un objet géré des données de base?
- 25. Rails: aide contrôleur refactoring
- 26. refactoring de référence JPA
- 27. DirectX géré ou non géré?
- 28. C# ASP.NET Codes de refactoring | Comment/Directives
- 29. Comment générer des fixtures Symfony YML à partir de données de base de données existantes?
- 30. HTML5 localStorage Apped nouvelles données clés déjà existantes
+1 pour une excellente réponse. –
C'est génial. Ce serait génial de voir des liens vers d'autres ressources/blogs à ce sujet. – syclee