2012-06-22 81 views
1

我正在從xml映射轉移到基於代碼的映射。我遇到了NHibernate Map集合的問題。NHibernate映射代碼映射集合

下面是XML映射這完美工作(它是有點簡化,有實際上更多的屬性和集合):

我想出
<class name="Company" where="IsDeleted=0" lazy="false"> 
    <id name="Id"> 
     <generator class="guid"></generator> 
    </id> 
      <map name="Contacts" lazy="true" cascade="all" where="IsDeleted=0"> 
     <key column="CompanyId"></key> 
     <index column="Id" type="guid"></index> 
     <one-to-many class="CompanyContact"/> 
    </map> 
</class> 

的交替代碼映射是下一個:

public CompanyMap() 
{ 
    Id(x => x.Id, mapper => mapper.Generator(Generators.Guid)); 
    Map(x => x.Contacts, 
    m => 
    { 
    m.Where(FILTER); 
    m.Cascade(Cascade.All); 
    m.Lazy(CollectionLazy.Lazy); 
    m.Key(c => c.Column("CompanyId")); 
    }, k => 
    { 
    k.Element(e => 
    { 
     e.Column("Id"); 
    }); 
    k.OneToMany(e => e.Class(typeof(CompanyContact))); 
    }); 
} 

上面產生下一hbml在地圖:

<map name="Contacts" lazy="true" cascade="all" where="IsDeleted=0"> 
    <key column="CompanyId" /> 
    <map-key type="Guid" /> 
    <one-to-many class="CompanyContact" /> 
</map> 

我顯然這裏缺少索引欄。因此,在生成SQL時,nhibernate將使用idx爲DefaultIndexColumnName。

所以問題是我將如何設置地圖索引?

更新: 根據hibernate文檔,我應該使用map-key。 因此,重新說明這個問題,我將如何設置map-key的列屬性?

回答

1

這還沒有實現NHibernate版本3.3.1。 在Jira中爲此創建了一個問題。

+0

任何鏈接到創建的問題? –

+0

https://nhibernate.jira.com/browse/NH-3205 –