Присоединение таблиц в NHibernate получает "отображение элемента коллекции имеет неправильное количество столбцов" - PullRequest
1 голос
/ 06 июля 2011

У меня проблемы с отображением отношений «многие ко многим» с помощью таблицы соединений.Я получаю сообщение об ошибке: "Отображение элемента коллекции имеет неверное количество столбцов"

Моя схема БД в основном: Drawing from SQL Server Management Studio.Несмотря на изображение из SQL Server Management Studio, база данных Sqlite.

Мой файл сопоставления:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="Design" table="Design">
  <id name="DesignID" column="DesignID" type="Int32">
    <generator class="native"/>
  </id>
  <property name="Name" type="String" column="Name" />
  <property name="DisplayOrder" type="Int32" column="DisplayOrder" />
  <property name="ChangeDate" column="ChangeDate" type="DateTime"/>
  <set name="DesignMeasures" table="DesignProperties" cascade="save-update,delete-orphan" >
    <key column="DesignID" />
    <many-to-many column="PropertyID" class="DesignProperties" unique="true" />
  </set>
</class>

  <class name="Properties" table="Properties">
    <id name="PropertyID" column="PropertyID" type="Int32">
      <generator class="native" />
    </id>
    <property name="Name" type="String" column="Name" />
    <property name="Value" type="String" column="Value" />
  </class>

  <class name="DesignProperties" table="DesignProperties">
    <composite-id>
      <key-many-to-one class="Design" name="DesignID" column="DesignID" />
      <key-many-to-one class="Properties" name="PropertyID" column="PropertyID" />
    </composite-id>
  </class>

</hibernate-mapping> 

Я знаю, что делаю что-то не так, но не могу понять.Что я делаю неправильно?Как мне это исправить?

1 Ответ

0 голосов
/ 06 июля 2011

DesignProperties - это либо отношение «многие ко многим», либо сущность, а не оба.

Поскольку у него нет собственных свойств, я бы удалил класс DesignProperties вместе с его отображением и просто оставил бы коллекцию Property (не Свойства ; ваше имя класса должно быть единичным) в Design.

...