Непонятная ошибка NHibernate / Fluent NHibernate - PullRequest
8 голосов
/ 14 апреля 2009

Я столкнулся со следующей ошибкой при попытке построить фабрика сессий:

PersistenceTests.Can_Map_Orders_To_Database : Failed 
System.IndexOutOfRangeException: Index was outside the bounds of the 
array. 
at NHibernate.Mapping.Column.set_Name(String value) 
at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindColumns(XmlNode node, 
SimpleValue model, Boolean isNullable, Boolean autoColumn, String 
propertyPath) 
at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindColumnsOrFormula 
(XmlNode node, SimpleValue simpleValue, String path, Boolean 
isNullable) 
at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindSimpleValue(XmlNode 
node, SimpleValue model, Boolean isNullable, String path) 
at 
NHibernate.Cfg.XmlHbmBinding.CollectionBinder.BindCollectionSecondPass 
(XmlNode node, Collection model, IDictionary`2 persistentClasses) 
at 
NHibernate.Cfg.XmlHbmBinding.CollectionBinder.<>c__DisplayClassd.<AddCollec tionSecondPass>b__c 
(IDictionary`2 persistentClasses) 
at NHibernate.Cfg.Configuration.SecondPassCompile() 
at NHibernate.Cfg.Configuration.BuildSessionFactory() 
at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in c: 
\Code Samples\NHibernate\Fluent Nhibernate - Trunk\src\FluentNHibernate 
\Cfg\FluentConfiguration.cs: line 94 
FluentNHibernate.Cfg.FluentConfigurationException: An invalid or 
incomplete configuration was used while creating a SessionFactory. 
Check PotentialReasons collection, and InnerException for more detail. 
at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in c: 
\Code Samples\NHibernate\Fluent Nhibernate - Trunk\src\FluentNHibernate 
\Cfg\FluentConfiguration.cs: line 99 
at FluentNHibernate.SessionSource..ctor(FluentConfiguration config) in 
c:\Code Samples\NHibernate\Fluent Nhibernate - Trunk\src 
\FluentNHibernate\SessionSource.cs: line 38 
at 
FluentNHibernate.Testing.SingleConnectionSessionSourceForSQLiteInMemoryTest ing..ctor 
(FluentConfiguration config) in c:\Code Samples\NHibernate\Fluent 
Nhibernate - Trunk\src\FluentNHibernate\Testing 
\SingleConnectionSessionSourceForSQLiteInMemoryTesting.cs: line 15 
at Core.Infrastructure.Data.NHibernate.Tests.PersistenceTests.SetUp() 
in PersistenceTests.cs: line 26

Я работаю против ствола FNH и NH 2.0.1. Забавно, что я возможность компилировать мои сопоставления (через AutoPersistenceModel.CompileMappings) и успешно записать их в файловую систему - FNH не жалуется. Только при попытке создать фабрику сеансов все идет kaboom с не очень полезным сообщением об ошибке выше. У кого-нибудь есть идеи?

Ответы [ 3 ]

13 голосов
/ 17 декабря 2009

Я обнаружил, что внутреннее исключение дало больше деталей. В моем случае мне пришлось добавить файл NHibernate.ByteCode.Castle.dll к ссылкам.

6 голосов
/ 14 апреля 2009

Свободно владеющий самим NHibernate редко жалуется на вас напрямую. Внутренне это просто сборка ваших файлов HBM для вас, так что если вы скажете ему создать что-то не так, то собственно NHibernate станет раздражительным.

Если вы еще этого не сделали, возможно, вы захотите начать с экспорта файлов сопоставления следующим образом:

.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyClass>()
    .ExportTo("path")

Тогда вы можете покопаться там, чтобы увидеть, если что-то не так. Я помню, как однажды получал эту ошибку, и думаю, что это связано с несоответствием количества отображаемых столбцов. Это была одна из тех ошибок, которые легко пропустить в моем отображении, поэтому, к сожалению, все, что я могу предложить, - это действительно просмотреть вывод ExportTo для всего, что не имеет смысла.

1 голос
/ 14 апреля 2009

Нам нужно будет увидеть вашу конфигурацию, чтобы сильно помочь. Но эта часть трассировки стека должна дать вам представление о том, с чего начать.

at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in c: 
\Code Samples\NHibernate\Fluent Nhibernate - Trunk\src\FluentNHibernate 
\Cfg\FluentConfiguration.cs: line 94 
FluentNHibernate.Cfg.FluentConfigurationException: An invalid or 
incomplete configuration was used while creating a SessionFactory. 
Check PotentialReasons collection, and InnerException for more detail.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...