Свободный NHibernate и один к одному - PullRequest
25 голосов
/ 15 января 2010

В течение (очень) долгого времени я искал пример того, как правильно реализовать отображение один к одному с помощью Fluent NHibernate.

Большинство ресурсов, которые я нахожу, говорят:

Я думаю, что вы имеете в виду "много к одному"

Однако на самом деле никто не приводит пример того, как правильно реализовать взаимно-однозначное отношение.

Итак, не могли бы вы привести пример сопоставления один к одному с Fluent NHibernate ?

Примечание: меня не интересуют люди, которые говорят: «Какая у вас модель, вам может понадобиться HasMany ». Нет, спасибо, мне просто нужен пример один к одному .

Точнее, Я знаю синтаксис . Это единственное, что я смог найти, выполнив поиск самостоятельно. Я ищу более полный пример, включающий ((очень) простую) настройку базы данных и полное отображение всех сущностей, участвующих в отношениях, которые, я думаю, имели бы разумный размер для переполнения стека. *

Ответы [ 4 ]

19 голосов
/ 20 января 2010

Я решил свою проблему.

Я также написал довольно подробную статью по этой проблеме, которую вы можете найти по адресу: http://brunoreis.com/tech/fluent-nhibernate-hasone-how-implement-one-to-one-relationship/index.html

Вы найдете сценарий, в котором нам нужно взаимно-однозначное отношение, схему базы данных, которая нам нужна, код модели в том виде, в каком она должна соответствовать требованиям NHibernate, и Свободно отображение, соответствующее ситуации.

3 голосов
/ 25 ноября 2014
these are the two classes.

public class A
{
  public virtual int Id {get;set;}
  public virtual string P1 {get;set;}
  public virtual string P2 {get;set;}
  public virtual string P3 {get;set;}
  public virtual B child { get; set; }
}

public class B
{
  public virtual int Id {get;set;}
  public virtual string P4 {get;set;}
  public virtual string P5 {get;set;}
  public virtual string P6 {get;set;}
  public virtual A parent;
}     

это следует добавить в свободную конфигурацию.

public AMap()
    {
      /* mapping for id and properties here */
      HasOne(x => x.child)
          .Cascade.All();
    }

    public BMap()
    {
      /* mapping for id and properties here */
      References(x => x.parent)
          .Unique();
    }
2 голосов
/ 18 января 2010

Это лучший пример Я видел. Надеюсь, это отвечает вашим потребностям.

0 голосов
/ 18 января 2010

HasOne(x => x.Prop)

...