Мне 21 год, и я использую энергию. Это - реальный шаг от других редакторов программирования, которых я использовал, и я рекомендую кому-либо еще в курсах информатики испытать его.
обычно, когда вы получаете IndexOutOfRangeException
в NHibernate, это происходит потому, что вы дважды сопоставили свойство или сопоставили два свойства с одним и тем же столбцом. Проверьте имена столбцов.
Возможно, это происходит случайно, потому что конфликт проявляется только в определенной совокупности данных.
You've put a length=50 in the mapping file, are you sure the database column is varchar(50), if NHibernate fetches a longer string it could be causing your error. I would usually leave the length attribute out.
Мы - и другие - также сталкивались с этой проблемой в последнее время и в прошлом. Похоже, это связано с многопоточным доступом к небезопасному SqlConnection
. Следующий действительно длинный (!) пост содержит больше примеров и некоторые подробности по проблеме: SQLDataReader.GetOrdinal () редко дает сбой с IndexOutOfRange . Там bbzippo утверждает:
«Очевидно, что SqlDataReader читает набор результатов, оставшийся от предыдущий запрос, выполненный на том же соединение пару секунд назад ».
К сожалению, я не нашел реального объяснения того, почему это исключение возникает внезапно в коде, который некоторое время работал без проблем.
Некоторые из предложений, сделанных в данный поток:
«Data Source = Sql2005; Initial Catalog = MyDbName; User Id = MyLogin; Password = MyPass; Pooling = false»
(это, скорее всего, снизит производительность вашего приложения, но обязательно сработает) статического
кода, ссылающегося на ваши экземпляры SqlConnection
на не- static
SqlConnection
s (это может быть не так просто ...) Я все еще пытаюсь найти источник ошибки в нашем приложении, но это не так просто, потому что мне не удалось воспроизвести это за пределами нашей живой среды. Мэтт Нееринкс [MSFT] предлагает в одном из своих ответов в вышеупомянутом сообщении использовать разные строки подключения и, следовательно, разные пулы соединений для разных частей вашего приложения, чтобы помочь сузить источник проблемы.
Еще одно прочтение, которое я нашел об этой проблеме, было на форумах спящего режима: https://forum.hibernate.org/viewtopic.php?p=2386963 , где у одного из плакатов также были проблемы с отложенной загрузкой. в многопоточном сценарии.
Надеюсь, это направит любого в правильном направлении к исправлению.
Оливер
П.С. Это копия моего ответа на Nhibernate FieldNameLookup выдает исключение IndexOutOfRangeException