2009-04-13 8 views
7

J'ai une application MVC en utilisant NHibernate.NHibernate Erreur sur la session.Sauvegardez

J'ai créé un modèle et j'ai essayé d'insérer des données dans la base de données pour la première fois avec NHibernate, alors allez-y doucement.

Je reçois cette erreur sur la session.Save (objet);

IndexOutOfRangeException était non gérée par le code utilisateur

index non valide 8 pour cette SqlParameterCollection avec Count = 8.

Lorsque je regarde les données dans l'objet en utilisant la fenêtre de surveillance tout semble ok et aussi les collections sont initialisées.

Utilisation de SQL 2005.

Toutes les idées pour lesquelles cela peut se produire s'il vous plaît?

Malcolm

Répondre

12

J'ai eu le même problème en utilisant NHibernate moi-même, le problème dans mon cas était dans la cartographie. Dans mes associations, j'ai mappé une propriété contenant l'entité associée, ainsi qu'une propriété avec l'ID d'association uniquement.

La solution dans mon cas était d'ajouter update="false" insert="false" à mon mappage de la propriété contenant l'ID. Comme ceci:

<property name="AssociationId" column="AssociationColumnName" update="false" insert="false" /> 
<many-to-one name="Association" column="AssociationColumnName" property-ref="Id" not-null="false" /> 
+0

J'ai déjà rencontré cette erreur à plusieurs reprises, car il se produit très rarement, j'ai spécifiquement attrapé l'exception et écrit un rappel dans le journal pour moi-même –

+0

wow! stackoverflow + fredrik ftw! Merci de m'avoir épargné beaucoup de temps sur cette question. –

2

Les gars si vous obtenez ceci: vérifier le fichier de mappage, j'ai obtenu la même erreur et j'avais deux propertise mis en correspondance avec la même colonne, je sais que la réponse est assez tard c'est pour les utilisateurs qui viennent chercher des réponses à la même question. Note: ce n'est peut-être pas la seule raison, de toute façon le mien était dû à cela.

Questions connexes