我一直使用NHibernate 3.1和FluentNHibernate 1.2获取异常Association references unmapped class: System.Guid
。关联引用未映射的类:System.Guid
我不知道这是如何可能的。 Guid的映射不是内部处理的吗?
我看到了几个以前提到的流利NHibernate 1.0中的一个错误,并且有人提到使用trunk来代替它被修复的地方,但我在1.2而不是1.0,所以大概这个问题已经得到解决。
编辑:下面是一些额外的信息 - 一个例子HBM我从流利AutoMapper出口看起来像下面
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
<class xmlns="urn:nhibernate-mapping-2.2" lazy="false" name="Treadmarks.Bus.Frontend.Model.PassType, Frontend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="`PassType`">
<id name="PassTypeId" type="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="PassTypeId" />
<generator class="guid.comb" />
</id>
<property name="Name" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Name" />
</property>
<property name="UsageInterval" type="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="UsageInterval" />
</property>
</class>
</hibernate-mapping>
而且下面是FNH代码生成说HBM:
private class AutomappingConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return type.Namespace.StartsWith("Treadmarks.Bus.Frontend.Model");
}
public override bool IsId(FluentNHibernate.Member member)
{
return member.Name == member.DeclaringType.Name + "Id";
}
}
public static Configuration BuildConfiguration()
{
return Fluently.Configure()
.Database(SQLiteConfiguration.Standard.ConnectionString("Data Source=Treadmarks.db; Compress=true"))
.Mappings(
m => m.AutoMappings.Add(AutoMap.Assembly(Assembly.GetExecutingAssembly(), new AutomappingConfiguration())
.Conventions.Add(
DefaultLazy.Never(),
LazyLoad.Never())
).ExportTo("mappings.hbm"))
.BuildConfiguration();
}
我们使用的GUID映射没有问题。是否有可能看到引发异常的代码行? –
它只是一个标准的BuildSessionFactory调用。 –
有趣的错误信息考虑'Guid'是一个'struct' ...看起来像一个框架中的错误。你有没有尝试过使用不同的版本? (只是为了测试这个问题,我的意思是。) –