У меня был вопрос, аналогичный Fluent NHibernate: Как создать двунаправленное сопоставление «один ко многим»? , но меня интересовала ситуация, когда у меня есть однозначное отображение. -один отображение. Например
Umbrealla
ID
Owner
UmbreallaOwner
ID
Umbrella
Как мы знаем, каждый зонт может принадлежать только одному человеку, и никто не владеет более чем одним зонтом. В свободной карте у меня было бы что-то вроде
UmbrellaMap()
{
Id(x=>x.ID);
References(x=>x.Owner);
}
UmbrellaOwnerMap()
{
Id(x=>x.ID);
References(x=>x.Umbrella);
}
При создании таблиц fluent создаст поле в зонте, ссылающееся на ID зонтика, и поле в зонтик, ссылающееся на зонтик. Есть ли способ изменить сопоставление так, что будет создан только один внешний ключ, но будут существовать свойство Umbrella и свойство Owner? Примеры, которые я видел, включают настройку отношений в обоих направлениях, поэтому добавление нового Umbrella выглядит как
AddUmbrealla(UmbrellaOwner owner)
{
var brolly = new Umbrella();
brolly.Owner = owner;
owner.Umbrella = brolly;
session.Save(owner); //assume cascade
}
, что кажется логичным, но немного громоздким.