我正在尝试为类结构创建一个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映射创建(为了更好的描述)容器并以这种方式映射数据?
希望有足够的信息来帮助解决这个问题 - 提前感谢所有帮助!
干杯,
莫里斯
答案 0 :(得分:0)
通过对这篇文章的更新,我已经意识到这不能完成,我正在考虑以错误的方式进行建模。
我去创建了一个改造的UserRoles类,以便它继承自User并拥有一个名为Roles的属性。这是一个更容易实现的解决方案,因此解决了问题。