Ассоциация ссылается на исключение не сопоставленного класса - PullRequest
3 голосов
/ 27 января 2010

Я пытаюсь сопоставить сущность Сотрудника Northwind с помощью NHibernate:

public class Employee
{
    public virtual int ObjectID { get; set; }
    public virtual string LastName { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string Title { get; set; }
    public virtual string TitleOfCourtesy { get; set; }
    public virtual DateTime HireDate { get; set; }
    public virtual DateTime BirthDate { get; set; }
    public virtual string Address { get; set; }
    public virtual string City { get; set; }
    public virtual string Region { get; set; }
    public virtual string PostalCode { get; set; }
    public virtual string Country { get; set; }
    public virtual string HomePhone { get; set; }
    public virtual string Extension { get; set; }
    public virtual byte[] Photo { get; set; }
    public virtual string Notes { get; set; }
    public virtual string PhotoPath { get; set; }

    public virtual ISet<Employee> Subordinates { get; set; }
    public virtual Employee ReportsTo { get; set; }
}

отображение:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
auto-import="true" namespace="NHibernateTests.Data" assembly="NHibernateTests">
  <class name="Employee" lazy="false" entity-name="Employees">
    <id name="ObjectID" access="property" column="EmployeeID" >
      <generator class="native" />
    </id>
    <property name="LastName" access="property" column="LastName"/>
    <property name="FirstName" access="property" column="FirstName"/>
    <property name="Title" access="property" column="Title"/>
    <property name="TitleOfCourtesy" access="property" column="TitleOfCourtesy"/>
    <property name="BirthDate" access="property" column="BirthDate"/>
    <property name="HireDate" access="property" column="HireDate"/>
    <property name="Address" access="property" column="Address"/>
    <property name="City" access="property" column="City"/>
    <property name="Region" access="property" column="Region"/>
    <property name="PostalCode" access="property" column="PostalCode"/>
    <property name="Country" access="property" column="Country"/>
    <property name="HomePhone" access="property" column="HomePhone"/>
    <property name="Extension" access="property" column="Extension"/>
    <property name="Photo" access="property" column="Photo"/>
    <property name="Notes" access="property" column="Country"/>
    <property name="PhotoPath" access="property" column="PhotoPath"/>

    <set name="Subordinates" table="Employees" access="property" lazy="false" inverse="true">
      <key column="ReportsTo"/>
      <one-to-many class="Employee" />
    </set>

    <many-to-one name="ReportsTo" column="ReportsTo" access="property" not-null="false"/>
  </class>
</hibernate-mapping>

Я продолжаю получать "Сопоставление ссылок не отображенного класса: NHibernateTests.Data.Employee" MappingException. Он отлично работает с закомментированными частями самоорганизации (подчиненными и отчетами).

Что не так с моим отображением?

Ответы [ 3 ]

8 голосов
/ 23 ноября 2011

Иногда вышеупомянутая ошибка возникает, когда мы не устанавливаем свойства для конкретного файла HBM. Итак, перейдите к вашим hbm свойствам файла и выберите

BuildAction = EmbeddedResource

Я протестировал этот сценарий, wpf со средой Nhibernate.

5 голосов
/ 28 января 2010

Глупая ошибка: используется имя объекта вместо атрибут table .

0 голосов
/ 19 декабря 2011

Я получал ту же ошибку, которая привела к сильному царапанию головы. Поэтому я просто хочу добавить свое решение на тот случай, если у кого-то еще возникнет такая же проблема ...

Объект, на который я ссылался в отношениях, был abstract, результатом глупой опечатки копирования / вставки. Как только я вынул abstract, он выполнил просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...