Предположим, у меня есть следующие два класса:
public class User : Entity
{
public virtual IList<Item> Items { get; set; }
}
public class Item : Entity
{
public virtual User Owner { get; set; }
}
Я создал два класса отображения:
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
HasMany(x => x.Items);
}
}
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
References(x => x.Owner);
}
}
В результате получится таблица Item
, в которой есть столбец UserId
и столбец OwnerId
.Когда я использую KeyColumn("OwnerId")
для сопоставления HasMany
, он работает только со столбцом OwnerId
, но я бы хотел этого избежать.Есть ли способ сообщить NHibernate, использовать столбец, созданный сопоставлением в ItemMap
?
Почему я хочу избежать явного указания столбца:
Имя столбца OwnerId
генерируется автоматическина основании названия имущества и некоторых правил.Если я изменю либо правила, либо имя свойства, мне нужно помнить, что тоже нужно изменить KeyColumn
.Так что, по сути, это не рефакторинг сохранения.