2008-12-30 7 views
0

Salut, je suis à la recherche d'une aide à cartographier les tableaux ci-dessous à un fichier de mappage de mise en veille prolongée: schema image http://barry-jones.com/temp/sch2.jpgNHibernate Mapping table intermédiaire

Je suis en train de remplir la liste localCalandarGroups avec localCalendarGroups connexes lors du chargement de mes userVOs. J'utilise une table intermédiaire (user_localCalendarGroup) pour maintenir l'utilisateur et localCalendarGroup Ids

public class UserVO 
{ 
    public virtual int id { get; set; } 
    public virtual string name { get; set; } 
    public virtual string pass { get; set; } 
    public virtual string email { get; set; } 
    public virtual string level { get; set; } 
    public virtual List<LocalCalendarGroupVO> localCalendarGroups { get; set; } 
} 
public class LocalCalendarGroupVO 
{ 

    public virtual int id { get; set; } 
    public virtual string name { get; set; } 

} 

Ceci est mon fichier de mappage jusqu'à présent. Comment puis-je informer NHibernate de la table intermédiaire?

<class name="UserVO" table="tb_users" lazy="false"> 

<id name="id" column="id"> 

    <generator class="native" /> 

</id> 

<property name="name" /> 
<property name="pass" /> 
<property name="level" /> 
<property name="email" /> 
<property name="localCalendarGroups"/> 

Toute aide, pointeurs beaucoup apprécié.

Répondre

4

La première chose que je vous suggère est d'utiliser IList au lieu de List pour mapper l'association localCalendarGroups dans vos classes de domaine. Cela permettra le chargement paresseux de la collection. Et voici le fichier de mappage de la classe UserVO:

<class name="UserVO" table="tb_users"> 
    <id name="id" column="id"> 
     <generator class="native" /> 
    </id> 
    <property name="name" /> 
    <property name="pass" /> 
    <property name="level" /> 
    <property name="email" /> 

    <bag name="localCalendarGroups" table="user_localCalendarGroup"> 
     <key column="userID" /> 
     <many-to-many class="LocalCalendarGroupVO" column="calID" /> 
    </bag> 
</class> 

et la définition de la classe correspondante:

public class UserVO 
{ 
    public virtual int id { get; set; } 
    public virtual string name { get; set; } 
    public virtual string pass { get; set; } 
    public virtual string email { get; set; } 
    public virtual string level { get; set; } 
    public virtual IList<LocalCalendarGroupVO> localCalendarGroups { get; set; } 
} 
+0

Merci pour cette action. Malheureusement, je continue d'obtenir une exception de mappage. Je vais jouer et voir si je ne peux pas le résoudre. Encore une fois merci. – user17510

Questions connexes