Infamous: Index n invalide pour ce SqlParameterCollection avec Count =
Cette exception:
Index non valide n pour cette SqlParameterCollection avec Count=
Généralement points à dupliquer les informations de mappage (voir Débordement de Pile + Google). Je suis assez sûr que je n'en ai pas. Existe-il d'autres raisons pour cela?
Il me semble avoir identifié le problème. J'ai présenté cette:
[DocumentId]
public virtual int GI
{
get { return base.Id; }
protected set { base.Id = value; }
}
Utilisation de la recherche par lucene.net. Cela semble interférer avec le FN! Quelles sont mes options?
PS:
at System.Data.SqlClient.SqlParameterCollection.RangeCheck(Int32 index)
at System.Data.SqlClient.SqlParameterCollection.GetParameter(Int32 index)
at System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item(Int32 index)
at NHibernate.Type.Int32Type.Set(IDbCommand rs, Object value, Int32 index)
at NHibernate.Type.NullableType.NullSafeSet(IDbCommand cmd, Object value, Int32 index)
at NHibernate.Type.NullableType.NullSafeSet(IDbCommand st, Object value, Int32 index, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id, Object[] fields, Object rowId, Boolean[] includeProperty, Boolean[][] includeColumns, Int32 table, IDbCommand statement, ISessionImplementor session, Int32 index)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Object obj, ISessionImplementor session)
at NHibernate.Action.EntityInsertAction.Execute()
at NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
at NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
at NHibernate.Engine.ActionQueue.ExecuteActions()
at NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
at NHibernate.Impl.SessionImpl.Flush()
at SharpArch.Data.NHibernate.DbContext.CommitChanges()
at Updater1.Program.Main(String[] args) in C:\Users\bla\Documents\Visual Studio 2010\Projects\Bla\Updater1\Program.cs:line 97
PPS:
public class MappedSequenceMap : IAutoMappingOverride<MappedSequence>
{
public void Override(AutoMapping<MappedSequence> mapping)
{
mapping.Id(x => x.Id, "GI").GeneratedBy.Assigned();
mapping.Map(x => x.Affiliation).Length(10000);
mapping.Map(x => x.Gene).Length(10000);
mapping.Map(x => x.OriginalIsolationCountry).Length(10000);
mapping.Map(x => x.OriginalAffiliation).Length(10000);
mapping.Map(x => x.PMIDs).Length(10000);
mapping.Map(x => x.Product).Length(10000);
mapping.Map(x => x.Fasta).Length(10000);
mapping.Map(x => x.Note).Length(10000);
mapping.Map(x => x.Strain).Length(10000);
mapping.HasManyToMany(x => x.PubmedPublications).Table("SequencesPubmedPublications");
}
}
source d'informationauteur cs0815
Vous devez vous connecter pour publier un commentaire.
La réponse est soit:-
un), vous avez une double propriété mappé dans la même classe
b) Il est possible, si vous êtes exposant une clé étrangère ainsi que l'utilisation d'un
<many-to-one ...
de l'entité dans le fichier de mappage. Si c'est le cas, ajoutezinsert="false" and update="false"
à la propriété de clé étrangère et de courir à nouveau.Pour vérifier cela, que vous utilisez couramment et mappant automatiquement, vous avez besoin de regarder les mappages XML. Voir ce [lien][2] et de l'utilisation
ExportTo(..)
méthode. Une fois que vous avez fait ce look à laXML
et de voir si vous avez tous les doublons de propriétés OU même de dupliquer des fichiers de mappage.Dans votre cas, vous avez deux références à la colonne
GI
:- Je prendre, vous ne pouvez pas définir l'annotation
[DocumentId]
sur leId
des propriétés de la classe. Je pense que vous pourriez avoir besoin d'abandonner mappage automatique pour cette classe et configurer via couramment manuellement!Avec plein de crédit à @Rippo, l'équivalent de réponse dans NHibernate Fluent qui m'a aidé:
Pour les classes:
Si vous avez le mappage suivant pour la
User
entité:Ce qui suit est l'une des solutions possibles (grâce à un double de la cartographie dans les
one-to-many
partie -one-Department-to-many-Users
):J'ai eu cette erreur dans mon Couramment IAutoMappingOverride classe, j'ai eu une cartographie.IgnoreProperty(p => Propriété) où la Propriété est seulement un getter. J'ai enlevé le IgnoreMap déclaration et il a fixé. C'est avec NH 3.3.1.4. Probablement ne se rapportent pas à votre question, mais j'espère que cela aidera quelqu'un d'autre.