C# 一个nHibernate映射中的多个表\对象
我正在尝试为类结构创建nHibernate映射,如下所示:C# 一个nHibernate映射中的多个表\对象,c#,nhibernate,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
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链接用户和角色:
用户角色链接表[
身份用户\角色\ ID(pk)
用户ID(FK到用户表)
roleid(FK到角色表)
]
在玩过nHibernate之后,这与我想要尝试和实现的目标类似(但它不起作用!):
我有一些映射\实体,它们似乎适用于角色和用户(用于项目的其他方面)对象,但如何将这些信息拉入一个UserDetails类?用户详细信息的要点是能够将所有这些信息作为一个对象一起返回。是否可以使用nHibernate映射创建(为了更好的描述)容器并以这种方式映射数据
希望有足够的信息来帮助解决这个问题-提前感谢所有的帮助
干杯
莫里斯(Morris)通过对这篇文章的更新,我意识到这是不可能做到的,而且我对模特的想法是错误的 我去创建了一个重新建模的UserRoles类,这样它就从User继承了一个名为Roles的属性。这是一个更容易实现的解决方案,所以问题解决了
<?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>