2010-03-26 74 views
3

我有這些2類:功能NHibernate IDictionary的複合元素映射

public class Category 
     { 
      IDictionary<string, CategoryResorce> _resources; 
     } 

    public class CategoryResource 
     { 
      public virtual string Name { get; set; } 
      public virtual string Description { get; set; } 
     } 

,這是XML映射

<class name="Category" table="Categories"> 
    <id name="ID"> 
    <generator class="identity"/> 
    </id> 
    <map name="Resources" table="CategoriesResources" lazy="false"> 

     <key column="EntityID" /> 
     <index column="LangCode" type="string"/> 

     <composite-element class="Aca3.Models.Resources.CategoryResource"> 
     <property name="Name" column="Name" /> 
     <property name="Description" column="Description"/> 
     </composite-element> 
    </map> 
</class> 

,我想將它與寫流利。 我發現類似的東西,並用這個代碼,我是想:

HasMany(x => x.Resources) 
       .AsMap<string>("LangCode") 
       .AsIndexedCollection<string>("LangCode", c => c.GetIndexMapping()) 
       .Cascade.All() 
       .KeyColumn("EntityID"); 

,但我不知道如何CategoryResource實體映射爲類別元素中的複合元素。

有什麼建議嗎?

感謝

回答

4

我認爲你正在尋找的映射是這樣的:

HasMany<CategoryResource>(x => x._resources) 
.AsMap<string>("LangCode") 
.KeyColumn("EntityID") 
.Table("CategoryResources") 
.Component(x => 
    { 
     x.Map(c => c.Name); 
     x.Map(c => c.Description); 
    }) 
.Cascade.All(); 
+0

非常感謝!有用 ! – 2010-05-11 10:54:05

+0

你是一個明星克里斯 - 我花了我的下午的更好的一部分,搜索如何與Fluent做到這一點,你釘了它。謝謝! – Dav 2012-07-11 16:27:14