我在尝试构建时遇到以下错误 会议工厂:
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与上面不是非常有用的错误消息。 有人有任何想法吗?
答案 0 :(得分:13)
我发现内部异常提供了更多细节。在我的情况下,我不得不将NHibernate.ByteCode.Castle.dll文件添加到引用。
答案 1 :(得分:6)
流利的NHibernate本身很少直接向你抱怨。在内部,它只是为你构建你的HBM文件,所以如果你告诉它构建错误的话,那么NHibernate本身会变得脾气暴躁。
如果您还没有,可能需要从导出映射文件开始,如下所示:
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyClass>()
.ExportTo("path")
然后你可以在那里挖掘,看看是否有问题。我记得曾经有过这样的错误,我认为这与映射的列数不匹配有关。这是我的映射中容易错过的错误之一,所以我可以建议的是真正地搜索ExportTo
的输出以获取任何无意义的错误。
答案 2 :(得分:1)
我们需要看到您的配置有很多帮助。但是这部分堆栈跟踪应该可以让你知道从哪里开始。
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.