J'utilise la classe SchemaExport dans NHibernate pour générer ma base de données à partir de mes fichiers .hbm.xml. Y at-il un moyen de définir la graine d'identité sur mes tables à 0 plutôt que 1? Pour les tables de référence, je préfère que tous mes identifiants d'état initiaux soient mis à 0, et je ne veux pas avoir à réinitialiser cette valeur chaque fois que je régénère ma base de données en mode développement. J'utilise SQL Server 2005, NHibernate version 1.2.1.Définir l'identité de la graine à 0 à l'aide de NHibernate SchemaExport
Répondre
Il est préférable de ne PAS utiliser les colonnes Identity avec NHibernate si possible; Ils incitent NHibernate à effectuer plus de déplacements dans la base de données, rendent le traitement par lots impossible et, en gros, brisent le modèle d'unité de travail. Ceci est discuté sur nhibernate.info et dans quelques blog posts comme celui-ci. Guid.comb ou Hi-Lo est généralement une meilleure option.
Si vous voulez vraiment continuer à utiliser l'Identité, et avoir des origines à partir de 0, alors voici quelques possibilités (non testées).
Juste une supposition, mais vous auriez probablement besoin d'abord définir votre unsaved-value="-1"
comme ceci:
Cela permet NHibernate de savoir que l'identité de -1 signifie que l'objet est pas enregistré (transitoire).
Vous devez également vous assurer que tous les id des entités ont une valeur par défaut de -1 aussi (par défaut nombres évidemment à 0):
public class Order {
public virtual long Id{get; private set;}
public Order(){
Id = -1;
}
}
Il est assez yukky! Ensuite, il s'agit de savoir comment faire démarrer SchemaExport à partir de 0. Il peut déjà le faire (en utilisant la valeur +1 comme valeur de départ). Vérifiez pour voir si cela fonctionne. Si ce n'est pas le cas, vous devrez peut-être corriger le problème ou remplacer le fichier hbm.xml. Une façon serait d'utiliser XSLT pour transformer les fichiers HBM générés. Encore une fois, joli yukky.
- 1. NHibernate - Question de l'outil SchemaExport?
- 2. Définition de l'origine de l'identité avec un certain nom Utilisation de NHibernate SchemaExport
- 3. structure de données laide à la recherche java
- 4. NHibernate SchemaExport et Configure() catch-22
- 5. SchemaExport, NHibernate et la suppression des clés étrangères
- 6. NHibernate SchemaExport avec les propriétés générées
- 7. paramètre _HAS_ITERATOR_DEBUGGING à 0
- 8. comment définir les valeurs initiales dans le tableau à 0
- 9. Comment prendre la graine pour un générateur aléatoire à partir de l'horloge, programmation en assembleur
- 10. NHibernate: impossible de définir un chargement paresseux
- 11. Étrange assemblage à partir de l'initialisation 0
- 12. "Dépassement de pile à la ligne: 0" sur Internet Explorer
- 13. NHibernate définir automatiquement les propriétés lors de la sauvegarde
- 14. Microsoft CRM 4.0: Comment définir "valide pour la mise à jour" = 0 pour l'attribut?
- 15. Ruby: comment définir une variable à 0 ou, si elle est déjà définie, incrémenter de 1
- 16. % preun est passé avec la valeur 0 à 1 $ lors de la mise à niveau
- 17. SchemaExport avec FluentNhibernate
- 18. nhibernate - sort null à la fin
- 19. NHibernate mappe à la place de la sous-classe
- 20. Comment générer un DDL de "migration" à partir de fichiers de mappage NHibernate?
- 21. Définir la largeur de l'élément enfant à la div parente
- 22. Javascript - Définir la valeur variable à l'intérieur de la fonction
- 23. Impossible de définir CSS à l'aide de la variable - jquery
- 24. Comment obtenir NHibernate SchemaExport pour créer des colonnes d'horodatage SQL Server?
- 25. NHibernate - Y at-il un quelconque intérêt à définir l'attribut de longueur pour les propriétés/colonnes?
- 26. Code Python à un interligne pour mettre la chaîne à 0 si vide
- 27. La mise à jour de nHibernate ne fait rien
- 28. NHibernate - Mapper la même entité à de nombreuses tables
- 29. NHibernate mappage des données XML à la base de données
- 30. ensemble privé de cartographie à l'aide NHibernate
Vous avez raison, c'est un processus moche. Je pense qu'un refactor est en ordre. Merci pour le conseil. –