У меня есть два теоретических предметных объекта:
человек публичного класса
{
public virtual int Id {get; приватный набор; }
}
public class PersonMap : ClassMap<Person>
{
public PersonMap() { Id( x => x.Id ); }
}
public class DriversLicense
{
public virtual Person Person { get; set; }
public virtual string State { get; set; }
}
public class DriversLicenseMap : ClassMap<DriversLicense>
{
public DriversLicenseMap()
{
References( x => x.Person );
Map( x => x.State );
}
}
Где объект Person должен использоваться в качестве PK на DriversLicense. Я не хочу, чтобы объект Person обладал какими-либо знаниями о DriversLicense, поэтому связь поддерживается строго в классе DriversLicense. На одного человека предоставляется только один DriversLicense.
При такой настройке я получаю следующее исключение:
System.Xml.Schema.XmlSchemaValidationException:
Элемент 'class' в пространстве имен
'urn: nhibernate-mapping-2.2' имеет
недопустимый дочерний элемент 'свойство' в
Пространство имен
'Урна: NHibernate-отображение-2,2'. Список
ожидаемые возможные элементы: 'мета,
jcs-кеш, кеш, идентификатор, составной идентификатор в
Пространство имен
'Урна: NHibernate-отображение-2,2'
.
Добавление свойства Id к типу DriversLicense устраняет проблему.
Есть ли способ использовать самого Person в качестве первичного ключа в таблице DriversLicense, чтобы базовая таблица просто использовала Person.Id для своего первичного ключа?