2010-03-26 5 views
3

i ont ces 2 classes:Courant NHibernate IDictionary avec élément cmposite

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

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

et c'est la cartographie 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> 

et je voudrais l'écrire avec Fluent. J'ai trouvé quelque chose de similaire et je tentais avec ce code:

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

mais je ne sais pas comment cartographier l'entité CategoryResource comme un élément composite dans l'élément Catégorie.

Un conseil?

grâce

Répondre

4

Je pense que la cartographie que vous cherchez quelque chose comme ceci:

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

Merci beaucoup! Ça marche ! –

+0

Vous êtes une star Chris - J'ai passé la plus grande partie de mon après-midi à googler sur la façon de faire avec Fluent, et vous l'avez clouée. Je vous remercie! – Dav

Questions connexes