J'ai lu à plus d'un endroit que l'utilisation de NHibernate's Identifier comme Primary Key est considérée comme une mauvaise pratique car les ID sont générés du côté serveur et par conséquent nous avons besoin d'une réponse du serveur à propos de la ID générés. (je pense que je l'ai vu aussi un message par Ayende qui dit que serveur MS-SQL peut avoir des problèmes identifiant générer et cela peut provoquer des violations de clé primaire)Utilisation de NHibernate Identifier Générateur d'identité
maintenant, disons que j'ai un très simple domaine modèle : blogs et post. où chaque blog peut avoir de nombreux postes et chaque poste appartient à EXACTEMENT un blogue (un à plusieurs) mais nous épargnons seulement post - relation> Blog et non Blog -> Messages
Supposons maintenant que je l'utilise NHibernate AVEC Idenitifer Id génération, que je ne pas utiliser en cascade donc j'ai dans mon code C# quelque chose comme ceci:
SaveBlogInTransaction(blog1);
SavePostsInTransaction(blog1posts);
maintenant, ma question est la suivante: si l'insertion peut se faire que dans un seul endroit dans mon code (il n'y a pas de problèmes de concurrence), est-il garanti que la connexion des messages à la e eir blog dans le db sera valide?
je veux dire, regardons le schéma de la table de messages:
postID, postname, PostType, blogid
est-il garanti que le blogid sera valide?
Note: chaque méthode fonctionne comme une transaction et à la fin il n'engage un à la DB
Je suis d'accord avec Sean, l'utilisation d'une autre stratégie génératrice fera des transactions plus efficaces car NHibernate n'a pas besoin d'interroger la base de données pour obtenir l'identifiant inséré. –