首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nhibernate多对多映射三个表。跳跃启动

nhibernate多对多映射三个表。跳跃启动
EN

Stack Overflow用户
提问于 2012-11-27 08:49:18
回答 1查看 847关注 0票数 1

我正在努力解决这个问题,但到目前为止还做不到。各种各样的错误。

这些是我的db表。

人员(personID,姓名,年龄)

角色(roleID、roleName)

PersonRoles(personRolesID、personID、roleID)

这是我的域类

代码语言:javascript
复制
public Person
{
public virtual Roles RolesForThisPerson {get;set;}
public virtual string Name {get;set;}
public virtual int Age {get;set;}
}

public Roles
{
public virtual IList<string> RoleList {get;set;}
}

我完全不知道如何处理这个问题。我对套装,包包,单子都很迷惑...我甚至不知道从何说起。

有人能帮我推一下吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 13:14:39

让我们保持DB模式不变,并首先调整C#域类:

代码语言:javascript
复制
public class Person
{
    public virtual string Name {get;set;}
    public virtual int Age {get;set;}
    public virtual IList<Role> RolesForThisPerson {get;set;}
}
public class Role
{
    public virtual string RoleName { get; set; }
}

现在,将这两个实体映射到已定义的表中:

代码语言:javascript
复制
<class name="Person" table="Person" lazy="true">
    <id name="ID" column="personID">
        <generator class="native" />
    </id>
    <property name="Name" not-null="true" />
    <property name="Age" not-null="true" />

    <!-- placeholder for roles -->

</class>

<class name="Role" table="Role" lazy="true">
    <id name="ID" column="roleID">
        <generator class="native" />
    </id>
    <property name="RoleName" not-null="true" />
</class>

现在我们可以使用<idbag>映射并以这种方式扩展Person类映射:

代码语言:javascript
复制
<idbag name="RolesForThisPerson" batch-size="25" table="PersonRoles"
    inverse="true" lazy="true" cascade="none" >
    <collection-id column="personRolesID" type="System.Int32" >
        <generator class="native" />
    </collection-id>
    <key column="personID" />            
    <many-to-many class="Role" column="roleID" />
</idbag>

<idbag>可以受益于这样一个事实,即即使是配对表也有它自己的标识符。Cascade设置为none,期望角色在系统中,并且仅为其分配用户(从中删除)。属性batch-size将影响在获取惰性角色集合时将执行多少SELECT语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13575745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档