NHibernate les références de l'objet sauvegardé transitoire exemple sauvegarder l'instance éphémère avant de tirer la chasse

Je suis en train d'enregistrer un objet complexe qui a de nombreuses référencé d'éléments à l'intérieur et il fonctionne parfaitement, la plupart du temps.
Toutefois, dans certains cas, nous faisons le ci-dessous exception,

les références de l'objet sauvegardé transitoire exemple - pour enregistrer l'instance éphémère avant de rincer ou de jeu de cascade d'action pour le bien de quelque chose qui pourrait faire de l'enregistrement automatique. Type: Espace De Noms.De base.Client.ClientDetails, Entité: Espace De Noms.De base.Client.ClientDetails

Le problème est, il y a environ 12 ClientDetails éléments à l'intérieur de mon complexe d'objet que l'on cherche à économiser.Est-il un moyen d'identifier l'objet de l'instance à l'origine du problème?
par NHibernate l'exploitation forestière ou d'une autre façon?
Mon exemple de code utilisé pour enregistrer en tant que ci-dessous,

_repository.Save<SuperParent>(obj);
_repository.Flush();

Veuillez noter que lorsque j'ai mis le Nhibernate show_sql à vrai que je suis capable de voir toutes les requêtes correctement, mais lorsque la chasse d'eau est appelée, l'exception est levée.

S'il vous plaît aider à résoudre le problème.

Juste un soupçon. Chaque objet est par NHibernate distinguer si c'est nouveau/temporaire afin d'insérer ou de l'existant afin d'être mis à JOUR. En cas de int ID, c'est: ID > 0 objet est exsiting, ID == 0 objet est nouveau. Essayez de vérifier, avant de le Rincer, et dont l'objet n'a pas l'ID généré... ce sera le soupçonne. Ainsi, vous pouvez trouver la Propriété de la collection à laquelle il appartient, et de la marquer avec cascade l'attribut ... NHibernate ensuite enregistrer tous les trucs pour vous
Regardez à l'intérieur de l'exception, le cas échéant. Habituellement, NHibernate lève l'exception de l'objet qui n'a pas sauvegardé (où ID est 0). Donc l'exception et intérieure exception devrait vous donner suffisamment de détails pour comprendre.
Salut Radim, oui j'ai essayé de rassembler toutes les requêtes générées. Mais cela se passe en 2 étapes. 1. Lorsque _repository.Enregistrer(obj) est appelée NHibernate génère tout le nécessaire d'INSÉRER des requêtes sql sans le FK références. 2. Lorsque _repository.Flush() est appelée, NHibernate génère les requêtes de mise à JOUR pour mettre à jour tous les FK références entre tous les objets et il n'est pas de trouver il y en a un de moins en moins de mise à JOUR pour "ClientDetails' élément et jette cette exception.S'il vous plaît corrigez-moi si ma compréhension est erronée et des conseils.
Salut MichaC, il n'est nul détails de l'exception, il donne seulement jusqu'à le nom de l'entité et il n'y a aucun id de l'objet ou d'autres valeurs à travers lequel nous pouvons identifier le type exact de l'objet de l'instance à l'origine du problème.Merci

OriginalL'auteur Naganathan | 2013-11-17