2010-03-08 8 views
0

Je suis en train de créer une cartographie NHibernate pour une structure de classe comme ceci:tables multiples objets dans un mapping NHibernate

class UserDetails{ 
    Guid id; 
    User user; 
    Role role; 

    public User UserInfo{ 
     get;set; 
    } 

    public Role UserRoles{ 
     get;set; 
    } 

    public Guid ID{ 
     Get; set; 
    } 
} 

class User{ 
    string name; 
    int id; 

    public string Name{ 
     get;set; 
    } 

    public int ID{ 
     get;set; 
    } 
} 

class Role{ 

    string roleName; 
    string roleDesc; 
    int roleId; 

    public string RoleName{ 
     get;set; 
     } 

    public string RoleDesc{ 
     get;set; 
    } 

    public int RoleID{ 
     get;set; 
    } 
} 

La structure de base de données sous-jacente est similaire aux tables, mais il y a une table de liaison qui liens utilisateur et rôle à l'aide de leurs identifiants respectifs: UserRoleLinkTable [ User_Role_ID identité (pk) userID (FK à la table utilisateur) roleid (FK à la table de rôle) ]

Après avoir joué environ avec NHibernate c'est-simil ar à ce que je veux essayer de réaliser (mais elles ne fonctionnent pas!):

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping 
    xmlns="urn:nhibernate-mapping-2.2" 
    assembly="Admin" 
    namespace="Admin" 
> 
    <class name="UserDetails" lazy="false" table="USER"> 
    <id name="ID"> 
     <generator class="guid"></generator> 
    </id> 

    <one-to-one name="UserInfo" class="User" lazy="false" cascade="none"/> 

    <bag 
     name="UserRoles" 
     inverse="false" 
     table="Role" 
     lazy="false" 
     cascade="none" 
    > 
     <key column="Role" /> 
     <many-to-many class="Role" column="ROLE_ID" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

Je mappings \ entités qui semblent travailler pour les objets Rôle et utilisateur (utilisé dans d'autres aspects du projet), mais comment faire Je tire cette information dans une classe UserDetails? Le point des détails de l'utilisateur pour pouvoir retourner toutes ces informations ensemble comme un objet. Est-il possible de créer (à défaut d'une meilleure description) un conteneur en utilisant un mappage nHibernate et de mapper les données de cette façon?

Espérons qu'il y ait assez d'informations pour aider à résoudre ce problème - merci d'avance pour toute l'aide donnée!

Cheers,

Morris

Répondre

0

Au moyen d'une mise à jour ce post, j'ai depuis rendu compte que ce ne peut pas être fait et que je pensais à la modélisation de la mauvaise façon.

Je suis allé créer une classe UserRoles remodelée de sorte qu'elle ait hérité de User et qu'elle ait une propriété appelée Roles à la place. C'était une solution beaucoup plus facile à mettre en œuvre, donc le problème a été résolu.