Я начинаю изучать 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](https://i.stack.imgur.com/27PoI.jpg)
<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>
Полагаю, книга не права?