2011-06-23 40 views
2

我一直使用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(); 
    } 
+0

我们使用的GUID映射没有问题。是否有可能看到引发异常的代码行? –

+0

它只是一个标准的BuildSessionFactory调用。 –

+0

有趣的错误信息考虑'Guid'是一个'struct' ...看起来像一个框架中的错误。你有没有尝试过使用不同的版本? (只是为了测试这个问题,我的意思是。) –

回答

2

事实证明,FNH无法正确生成List<Guid>的映射,就像List<int>等那样,我会将其报告给FNH团队。

+0

你知道这个问题吗? – Marco

0

我THI昨天在一个新项目上连线Fluent时发生错误信息。它现在正在工作(使用Guid键),但我现在无法再现错误。

该消息本身表明它正在寻找System.Guid的映射配置。我最好的猜测是它看到一个触发其外键逻辑的属性名称,并且该属性名称与Guid关联。

也许你可以添加一个新的外键惯例,以便它不再使用该默认逻辑做出这些假设?

相关问题