2010-03-08 87 views
0

我想创建一个NHibernate的映射一类结构如下所示:多个表在一个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; 
    } 
} 

底层数据库结构类似于表,但有一个链接表, UserRoleLinkTable [ 身份User_Role_ID(PK) 用户ID(FK到用户表) 角色ID(FK到角色表) ]

与NHibernate打大约在这之后是simil:使用各自的ID链接用户和角色AR什么,我想尝试和实现(但它不工作!):

<?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> 

我有映射\实体这似乎对角色和用户工作(在项目的其他方面的使用)的对象,但怎么办我将这些信息放入一个UserDetails类中?用户细节的要点是能够将所有这些信息作为一个对象返回。是否有可能使用nHibernate映射创建(为了更好的描述)容器并映射数据?

希望有足够的信息来帮助解决这个问题 - 在此先感谢所有帮助!

干杯,

莫里斯

回答

0

通过更新这个帖子因为我已经意识到,这不能做的手段,而且我想造型走错了路。

我去创建了一个改造的UserRoles类,以便它从User继承,并拥有一个名为Roles的属性。这是一个更容易实施的解决方案,因此解决了问题。