Свободный NHibernate и один-на-один
В течение (очень) долгого времени я искал пример того, как правильно реализовать сопоставление "один к одному" с Fluent NHibernate.
Большинство ресурсов, которые я нахожу, говорят:
Я думаю, вы имеете в виду много-к-одному
Однако никто на самом деле не дает пример того, как правильно реализовать отношение "один к одному" .
Итак, вы могли бы дать пример сопоставления "один к одному" с Fluent NHibernate?
Примечание. Меня не интересуют люди, говорящие "что ваша модель, вам может понадобиться HasMany". Нет, спасибо, мне просто нужен пример один-к-одному.
Чтобы быть более точным, , я знаю синтаксис. Это единственное, что я смог найти, обыскав меня. То, что я ищу, является более полным примером, включая ((очень) простую) настройку базы данных и все сопоставление всех объектов, которые участвуют в отношениях, которые, как я думаю, будут иметь разумный размер для Stack Overflow.
Ответы
Ответ 1
Я решил свою проблему.
Я также написал несколько подробную статью по этой проблеме, которую вы можете найти по адресу: http://brunoreis.com/tech/fluent-nhibernate-hasone-how-implement-one-to-one-relationship/index.html
Вы найдете сценарий, в котором мы хотим иметь отношение "один к одному", схему базы данных, как нам бы хотелось, код модели, поскольку она должна соответствовать требованиям NHibernate, а также сопоставление Fluent, которое соответствует к ситуации.
Ответ 2
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();
}
Ответ 3
Это лучший пример, который я видел. Надеюсь, он удовлетворит ваши потребности.
Ответ 4
HasOne(x => x.Prop)