2012-01-02 3 views
1

У меня есть следующий SQL:Fluent NHibernate присоединиться специфицировать присоединиться Критерии

select a.a, b.b, c.c 
from apple a 
join burger b on a.b = b.b 
left outer join charlie c on a.c = c.c 
where c.x = 'kke'; 

для отображения его, я попробовал следующее свободно отображение NHibernate:

public entityMap() 
    { 
     Table("apple"); 
     Id(x => x.a, "a").GeneratedBy.TriggerIdentity(); 

     Join("burger", m => 
     { 
      m.Inverse(); 
      m.Fetch.Join(); 
      m.KeyColumn("b"); 


     }); 
     Join("charlie", m => 
             { 
      m.Inverse(); 
      m.Fetch.Join(); 
      m.KeyColumn("c"); 
     }); 
     Where("this_1_.x = 'kke'"); 

    } 

, который приводит к следующему SQL:

select a.a, b.b, c.c 
from apple a 
join burger b on a.a = b.b 
left outer join charlie c on a.a = c.c 
where c.x = 'kke'; 

как вы можете видеть, соединения aa = bb и aa = cc, когда я хочу, чтобы они были ac = cc и ab = Синяя книга

Как я могу принять это без ссылок (я хочу, чтобы только одна сущность из всех трех таблиц).

ответ

1

Невозможно.

Я не думаю, что NHibernate - это правильный инструмент для такого подхода к базе данных, который вы используете.

Смежные вопросы