Есть ли способ использовать сопоставление соединений в беглом nhibernate с указанным фильтром? - PullRequest
2 голосов
/ 15 января 2011

У меня есть сценарий, в котором я хочу создать карту класса, который собирает данные из двух таблиц вместе. Например, две мои таблицы - это Persons и PersonAddresses. Я хочу, чтобы результирующий сопоставленный класс объединял эти два вместе следующим образом:

public class PersonWithAddress
{
   public int ID { get; set; }
   // person fields ..

   // address fields
}

Проблема в том, что каждый человек может иметь более одного адреса, но только один адрес помечается как его основной адрес. Это адрес, который я хочу включить в эту сущность. Поэтому я подумал, что есть способ использовать Join () в моем отображении и указать фильтр для объединения следующим образом:

public PersonWithAddressMap()
{
   Table("People");
   Id(x => x.ID, "PersonID");

   Map(x => x.FirstName);
   // map all the person fields...

   Join("PersonAddresses", pa =>
   {
      pa.Optional();

      pa.Map(x => x.AddressLine1);
      // map all the other address fields

      // apply filtering
      pa.Where(x => x.IsPrimary == true);  // <-- does not exist
   });
}

Кто-нибудь знает способ сделать это?

...