一个nHibernate映射中的多个表\对象

时间:2010-03-08 16:29:04

标签: c# 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;
    }
}

底层数据库结构与表类似,但有一个链接表,使用各自的ID链接用户和角色: UserRoleLinkTable [     身份User_Role_ID(pk)     userID(FK到用户表)     roleid(FK到角色表) ]

在玩nHibernate之后,这与我想要尝试和实现的相似(但它不起作用!):

<?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映射创建(为了更好的描述)容器并以这种方式映射数据?

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

干杯,

莫里斯

1 个答案:

答案 0 :(得分:0)

通过对这篇文章的更新,我已经意识到这不能完成,我正在考虑以错误的方式进行建模。

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