Как я могу сопоставить 2 таблицы (1: много) одному объекту домена в беглом NHibernate? - PullRequest
0 голосов
/ 04 июня 2011

Допустим, у меня есть таблицы Person (Id, Name) и Address (Id, PersonId, Address, IsPrimary) с отношением от 1 до 0..2. И то, и другое следует сопоставить одному объекту домена Person, например:

public class Person()
{
  public virtual string Name;
  public virtual string PrimaryAddress;
  public virtual string SecondaryAddress;
}

Столбец IsPrimary определяет, является ли он первичным (= true) или вторичным (= false) адресом. Таким образом, в конечном итоге это должны быть два левых соединения с дополнительным условием IsPrimary = 1 или IsPrimary = 0.

Можно ли сделать этот тип картирования в беглом NH? Как это может выглядеть?

Спасибо!

1 Ответ

1 голос
/ 04 июня 2011

Я бы сказал, что в данном случае вы на самом деле не делаете отображение один ко многим.Возможно, было бы лучше, чтобы ваша личная таблица была больше похожа на Person (Id, Name, PrimaryAddressId, OtherAddressId).Если вы хотите сделать один-ко-многим, почему бы не сопоставить его один-ко-многим, а затем задать свойства первичного и вторичного адресов, которые ищут соответствующий адрес в свойстве:

public virtual IList<Address> Addresses { get; set; }

?Я думаю, это то, что имеет для меня больше смысла.

...