Моя книга NHibernate не так? - PullRequest
       2

Моя книга NHibernate не так?

1 голос
/ 28 декабря 2010

Я начинаю изучать NHibernate (3.0) и поднял копию Поваренной книги NHibernate 3.0 Packt Publishing .

Есть раздел по отображению «один ко многим», по которому я иду, но со своей собственной базой данных. Он предлагает мне сделать что-то подобное, чтобы смоделировать отношения один-ко-многим между клиентами и их доменами:

public class Customer
{
  public virtual int Id { get; protected set; }
  public virtual string CustomerName { get; set; }
  // Customer has many domains
  public virtual IList<Domain> Domains { get; set; }
}

public class Domain
{
  public virtual int Id { get; protected set; }
  public virtual int CustomerID { get; set; }
  public virtual string DomainName { get; set; }
}

Отображение клиентов:

<class name="Customer" table="tblCustomer">
  <id name="Id">
    <column name="CustomerID" sql-type="int" not-null="true"/>
    <generator class="identity"/>
  </id>

  <property name="CustomerName" column="Customer"/>
  <list name="Domains">
    <key column="CustomerID"/>
    <one-to-many class="Domain" />
  </list>
</class>

Когда я запускаю это, я получаю следующую ошибку:

Ошибка проверки XML: элемент 'list' в пространстве имен 'urn: nhibernate-mapping-2.2' имеет недопустимый дочерний элемент 'one-to-many' в пространстве имен 'urn: nhibernate-mapping-2.2'. Список возможных ожидаемых элементов: 'index, list-index' в пространстве имен 'urn: nhibernate-mapping-2.2'.

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

alt text

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    assembly="Eg.Core"
    namespace="Eg.Core">
  <subclass name="Movie" extends="Product">
    <property name="Director" />
    <list name="Actors" cascade="all-delete-orphan">
      <key column="MovieId" />
      <index column="ActorIndex" />
      <one-to-many class="ActorRole"/>  <-- Is this wrong?
    </list>
  </subclass>
</hibernate-mapping>

Полагаю, книга не права?

1 Ответ

4 голосов
/ 28 декабря 2010

Нет, в вашем отображении отсутствует элемент index. Список в NHibernate - это упорядоченный набор, если вы хотите, чтобы неупорядоченный набор использовал отображение пакетов.

...