2010-11-11 3 views

Répondre

1

Je ne sais pas quel générateur d'identifiants vous utilisez et quel problème vous devez réellement résoudre. En gros, ce sont vos options:

  • espace réservé insérer un (null-objet)
  • utilisation Guids à la place (guid.comb), vous ne serez pas dans ce problème du tout.
  • écrire votre propre IdentityGenerator qui permet ids réservés (il y a encore beaucoup de possibilités pour mettre en œuvre, cela dépend de vos besoins)
+0

Soyez prudent en utilisant Guids comme clés primaires. SQL peut rencontrer des problèmes de performance. Ils ont certainement du sens, mais travailler avec le DBA et savoir dans quoi vous vous engagez. – David

+0

@David: Guid.comb corrige certains d'entre eux (il génère des guids séquentiels). Les Guids sont bien sûr plus gros que les nombres. J'utilise bigint pour l'instant, qui sont toujours la moitié de la taille d'un guid. Mais je ne suis pas un dba ... –

1

This peut être utile pour vos besoins. Je ne suis pas sûr qu'il existe un moyen de réserver un ID via NHibernate, mais l'idée derrière l'approche Hi/Lo dans ce lien est de scinder l'Id en deux valeurs et permettre à un client de travailler déconnecté en réservant toute une gamme de valeurs , permettant ainsi de définir ses propres clés avant l'insertion (re-synchronisation).