Моя структура базы данных выглядит примерно так:
Person
Id
Name
FieldA
FieldB
Phone
Id
Number
PersonPhone
PhoneId
PersonId
IsDefault
Мое сопоставление NHibernate для объектов Person и Phone прямолинейно, с PersonPhone у меня возникли сложности. Я хочу иметь коллекцию объектов PersonPhone в качестве свойства Person, которое позволит мне иметь номер телефона человека и иметь возможность определить, какой номер телефона является «по умолчанию» или основным номером человека.
в идеале мне бы хотелось, чтобы мой объект PersonPhone выглядел так:
public class PersonPhone
{
public virtual Person Person { get; set; }
public virtual Phone Phone { get; set; }
public virtual bool IsDefault { get; set; }
}
пока что мое отображение NHibernate для этой таблицы выглядит следующим образом:
<class name="PersonPhone" table="PersonPhone">
<composite-id>
<key-property name="Person" column="PersonId" />
<key-property name="Phone" column="PhoneId" />
</composite-id>
<property name="IsDefault" column="IsDefault"/>
</class>
но когда NHibernate компилирует мои отображения, я получаю сообщение об ошибке:
Не удалось скомпилировать документ сопоставления: MyApp.Entities.PersonPhone.hbm.xml. NHibernate.MappingException: не удалось определить тип для: MyApp.Entities.Person, MyApp.Entities, версии = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null, для столбцов: NHibernate.Mapping.Column (PersonId)
Любые идеи о том, как это должно быть сопоставлено?