繁体   English   中英

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

[英]Multiple tables\objects in one nHibernate 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;
    }
}

基础数据库结构与表相似,但是存在一个链接表,该链接表使用其各自的ID链接用户和角色:UserRoleLinkTable [identity User_Role_ID(pk)userID(FK到User表)roleid(FK到Role表)]

在玩过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映射创建(为了更好地描述)容器,并以此方式映射数据?

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

干杯,

莫里斯

从那以后,通过更新本文,我意识到这是行不通的,并且我正在考虑以错误的方式进行建模。

我去创建了一个重构的UserRoles类,以便它继承自User并具有一个名为Roles的属性。 这是易于实施的解决方案,因此可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM