Fluent NHibernate: как создать двунаправленное сопоставление один-к-одному?

У меня был вопрос, аналогичный 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
 }

, что кажется логичным, но немного громоздким.

7
задан Community 23 May 2017 в 12:11
поделиться