NHibernate многие-ко-многим - как извлечь свойство из таблицы соединений и связать его с дочерним элементом? - PullRequest
3 голосов
/ 26 октября 2010

У меня есть существующее отношение «многие ко многим» в SQL, которое отображается на мои бизнес-объекты с помощью NHibernate.

Я хочу добавить свойство для дочернего элемента (Категория ниже), которое применимо только котношения между родителем и ребенком.В SQL я бы добавил поле в таблицу соединения.

Как использовать NHibernate, чтобы извлечь это значение из таблицы соединения и связать его со свойством потомка?

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
  namespace="MyProject.Core.Entities"
  assembly="MyProject.Core">

  <class name="Product" table="Products" lazy="false">

    <id name="ProductId" access="field">
      <generator class="native" />
    </id>

    <property name="ProductName" access="field" />

    <idbag name="Categories" table="ProductCategory">
      <collection-id column="ProductCategoryId" type="int">
        <generator class="native" />                
      </collection-id>
      <key column="ProductId" />
      <many-to-many column="CategoryId" class="Category" />
    </idbag>

  </class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
  namespace="MyProject.Core.Entities"
  assembly="MyProject.Core">

  <class name="Category" table="Categories" lazy="false">

    <id name="CategoryId" access="field">
      <generator class="native" />
    </id>

    <property name="CategoryName" access="field" />

  </class>
</hibernate-mapping>

1 Ответ

2 голосов
/ 26 октября 2010

Основной ответ заключается в том, что вы должны объявить таблицу присоединения и создать для нее класс. Подобный вопрос можно найти здесь:

Как использовать NHibernate ManyToMany со свойствами (столбцами) в таблице соединений (Fluent NHibernate)

Уточнение по комментариям:

Product one-to-many ProductCategory
Category one-to-many ProductCategory
ProductCategory many-to-one Product
ProductCategory many-to-one Category
...