Я пытаюсь сопоставить родительские дочерние отношения между объектом Person и объектом Organization в FluentNHibernate, используя ссылки в файле сопоставления, например так:
Ссылки (x => x. Организация);
Связь представляет собой объект Person, содержащий столбец OrganizationId, который соответствует записи в таблице Organization с соответствующим значением OrganizationId. Разные записи о персонале могут принадлежать одной и той же организации.
Когда я получаю объект Person, он работает правильно. Человек. Организация населена. Я могу сохранить объект Person, и он работает правильно. Однако, когда я пытаюсь добавить новый объект Person, я получаю исключение Index Out of Range из NHibernate. Исключение возникает при вызове session.SaveOrUpdate (person). Я попытался изменить отображение на:
Ссылки (x => x.Организация) .Cascade.None ()
По-прежнему получаю ту же ошибку. Я не могу понять, что вызывает исключение. Полное исключение таково:
System.IndexOutOfRangeException: недопустимый индекс 22 для этой коллекции SqlParameterCollection с счетом = 22.
в System.Data.SqlClient.SqlParameterCollection.RangeCheck (индекс Int32)
в System.Data.SqlClient.SqlParameterCollection.GetParameter (Int32 index)
в System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item (Int32 index)
в NHibernate.Type.NullableType.NullSafeSet (IDbCommand cmd, значение объекта, индекс Int32)
в NHibernate.Type.ManyToOneType.NullSafeSet (IDbCommand st, значение объекта, индекс Int32, логическая установка [], сеанс ISessionImplementor)
в NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Идентификатор объекта, поля Object [], Object rowId, Boolean [] includeProperty, Boolean [] [] includeColumns, таблица Int32, инструкция IDbCommand, сеанс ISessionImplementor, индекс Int32)
в NHibernate.Persister.Entity.AbstractEntityPersister.GeneratedIdentifierBinder.BindValues (IDbCommand ps)
в NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert (SqlCommandInfo insertSQL, сеанс ISessionImplementor, связыватель IBinder)
в NHibernate.Persister.Entity.AbstractEntityPersister.Insert (поля Object [], Boolean [] notNull, SqlCommandInfo sql, объектный объект, сеанс ISessionImplementor)
в NHibernate.Persister.Entity.AbstractEntityPersister.Insert (поля Object [], объект obj, сеанс ISessionImplementor)
в NHibernate.Action.EntityIdentityInsertAction.Execute ()
в NHibernate.Engine.ActionQueue.Execute (исполняемый файл IExecutable)
в NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate (объектный объект, ключ EntityKey, постоянное сохранение IEntityPersister, логическое значение useIdentityColumn, что угодно объект, источник IEventSource, логическое значение requireImmediateIdAccess)
в NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId (Объектный объект, String entityName, Любой объект, Источник IEventSource, Boolean requireImmediateIdAccess)
в NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId (событие SaveOrUpdateEvent)
в NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient (событие SaveOrUpdateEvent)
в NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate (событие SaveOrUpdateEvent)
в NHibernate.Impl.SessionImpl.FireSaveOrUpdate (событие SaveOrUpdateEvent)
at NHibernate.Impl.SessionImpl.SaveOrUpdate (Object obj)