Nhibernate 映射字典
我有3个表:用户、访问级别、角色。我的用户类具有Nhibernate 映射字典,nhibernate,orm,mapping,Nhibernate,Orm,Mapping,我有3个表:用户、访问级别、角色。我的用户类具有公共虚拟字典角色{get;set;},以及 角色类是否有公共虚拟字典用户{get;set;}?这些字典应该如何在映射中表示?在FluentNhibernate中,它看起来像 HasManyToMany(user => user.Roles) .Table("UserRoleAccessLevel") .AsEntityMap("role_id") .KeyColumn("user_id"); HasManyToMan
公共虚拟字典角色{get;set;}
,以及
角色类是否有
公共虚拟字典用户{get;set;}
?这些字典应该如何在映射中表示?在FluentNhibernate中,它看起来像
HasManyToMany(user => user.Roles)
.Table("UserRoleAccessLevel")
.AsEntityMap("role_id")
.KeyColumn("user_id");
HasManyToMany(role => role.Users)
.Table("UserRoleAccessLevel")
.AsEntityMap("user_id")
.KeyColumn("role_id");
但是现在不能测试它
更新:在hbm.xml中
<map name="Roles" table="UserRoleAccessLevel">
<key column="user_id" />
<index-many-to-many class="Role" column="role_id" />
<many-to-many class="AccessLevel" column="accesslevel_id" />
</map>
<map name="Users" table="UserRoleAccessLevel">
<key column="role_id" />
<index-many-to-many class="User" column="user_id" />
<many-to-many class="AccessLevel" column="accesslevel_id" />
</map>
如果您提供了表的结构,尤其是AccessLevels表,那就太好了。就我所能猜到的表的结构而言,我可以向您推荐这种映射
<class name="User" table="Users">
<id name="Id" column="user_id">
<generator class="native" />
</id>
<property name="Name" column="user_name" not-null="true" />
<map name="Roles" table="AccessLevels" cascade="save-update">
<key column="user_id" />
<map-key-many-to-many column="role_id" class="Role" />
<one-to-many class="AccessLevel"/>
</map>
</class>
<class name="Role" table="Roles">
<id name="Id" column="role_id">
<generator class="native" />
</id>
<property name="Name" column="user_name" not-null="true" />
</class>
<class name="AccessLevel" table="AccessLevels">
<id name="Id" column="Id">
<generator class="native" />
</id>
<property name="Level" column="level" not-null="true" />
<many-to-one name="User" column="user_id" not-null="true" cascade="save-update" />
<many-to-one name="Role" column="role_id" not-null="true" cascade="save-update" />
</class>
谢谢。但我不熟悉FluentNHibernate。您能告诉我如何在映射文件中执行此操作吗?