代码之家  ›  专栏  ›  技术社区  ›  MD Sayem Ahmed

如何映射NHibernate中的多对多关联

  •  0
  • MD Sayem Ahmed  · 技术社区  · 15 年前

    我有一些数据库表 Project , Employee Branch .员工可以同时处理多个项目。同样,在一个项目中,有多个员工。此外,项目在特定的分支机构进行。为了维持所有这些关系,我使用 project_employee_branch 表,它将存储上述三个表的相关主键。举个例子,这个 项目\员工\分公司 表可以包含类似行(1,2,3),这意味着主键为1的项目在主键为3的分支处执行,其项目成员之一是主键为2的员工。

    我如何在NHibernate中映射所有这些关联?我已经使用外键概念将多个关联映射到了一个关联,但我不知道如何映射这些类型的关联,其中涉及中间表。

    1 回复  |  直到 15 年前
        1
  •  1
  •   David M    15 年前

    我要说的第一点是,你的数据库模式和你的描述不匹配,所以请根据初始值接受下面的任何建议 告诫 . 你说

    一个项目是在一个特定的分支机构进行的。

    这意味着项目和分支之间应该有一个简单的外键关系。当然,如果这就是模式的样子,那么您将拥有一个双向多对多链接表,并且您的生活将更加轻松。

    无论如何,有了三向组合,您需要有一个组件集合,其中组件对其他两个对象类型具有多对一属性。有一个例子 section 7.2 of the NHibernate documentation ,但我认为在产品的映射中会出现类似的情况:

    <set name="BranchEmployees" table="product_employee_branch" lazy="true">
        <key column="product_id">
        <composite-element class="Purchase">
            <many-to-one name="Branch" class="Branch" />
            <many-to-one name="Employee" class="Employee"/>
        </composite-element>
    </set>