Мне нужно сопоставить две простые таблицы с отношением внешнего ключа. Одна из таблиц: Контакт , содержащий столбцы идентификатор (первичный ключ типа int), имя , адрес и guid (недавно добавлено и не является первичным ключом). Другой - номер телефона , содержащий столбцы идентификатор (первичный ключ типа int), контакт ___ идентификатор (внешний ключ идентификатора в таблице контактов) и номер телефона .
Файл сопоставления для таблицы контактов выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="OfflineDbSyncWithNHibernate" default-lazy="true" namespace="OfflineDbSyncWithNHibernate.Models">
<class name="Contact" table="Contact">
<id name="Id" column="Id" type="int">
<generator class="native" />
</id>
<property name="Name" column="name" type="string"/>
<property name="Address" column="address" type="string"/>
<property name="Guid" column="guid" type="string"/>
<set lazy="true" batch-size="6" table="phone_number" name="PhoneNumbers" fetch="join" inverse="false" cascade="all" >
<key foreign-key="FK_contact_phone_number" column="contact_id"/>
<one-to-many class="PhoneNumber" />
</set>
</class>
</hibernate-mapping>
Файл сопоставления для таблицы Phone_number:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="OfflineDbSyncWithNHibernate" default-lazy="true" namespace="OfflineDbSyncWithNHibernate.Models">
<class name="PhoneNumber" table="phone_number">
<id name="Id" column="Id" type="int">
<generator class="native" />
</id>
<property name="ContactId" column="contact_id" />
<property name="Number" column="phone_number" />
</class>
</hibernate-mapping>
Классы Contact и PhoneNumber:
namespace OfflineDbSyncWithNHibernate.Models
{
public class Contact
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Address { get; set; }
public virtual string Guid { get; set; }
public virtual PhoneNumbers PhoneNumbers { get; set; }
}
}
namespace OfflineDbSyncWithNHibernate.Models
{
public class PhoneNumber
{
public virtual int Id { get; set; }
public virtual int ContactId { get; set; }
public virtual string Number { get; set; }
}
}
namespace OfflineDbSyncWithNHibernate.Models
{
public class PhoneNumbers : List<PhoneNumber>
{
}
}
Когда я загружаю contact и phone_numbers отдельно, он работает, но после добавления элемента set для получения отношения один ко многим nhibernate выдает ошибку:
NHibernate.MappingException: неверная информация о сопоставлении, указанная для типа OfflineDbSyncWithNHibernate.Models.Contact, проверьте файл сопоставления на предмет несоответствия типов свойств
Я новичок в nHibernate, поэтому я не уверен, есть ли ошибка в элементе set или мне даже не следует его использовать. Любая помощь будет оценена.