2009-08-30 6 views
16

Я хочу отобразить класс, который приводит к левому внешнему соединению, а не к внутреннему соединению.Fluent Nhibernate left join

Мой составной пользовательский объект создан одной таблицей («aspnet_users») и некоторыми необязательными свойствами во второй таблице (например, FullName в «users»).

public class UserMap : ClassMap<User> { 
    public UserMap() { 
     Table("aspnet_Users"); 
     Id(x => x.Id, "UserId").GeneratedBy.Guid(); 
     Map(x => x.UserName, "UserName"); 
     Map(x => x.LoweredUserName, "LoweredUserName"); 

     Join("Users",mm=> 
         { 
          mm.Map(xx => xx.FullName); 

         }); 
    } 
} 

Этот результат отображения во внутреннем соединении выбирается так, чтобы результат не получался, является второй таблицей, так как нет данных. Я хотел бы создать левое соединение.

Возможно ли это только на уровне запроса?

ответ

26

Попробуйте метод Optional().

Join("Users", m => 
{ 
    m.Optional(); 
    m.Map(x => x.FullName); 
}); 
+0

Благодаря это работало! – Ronnie

+2

Woo! Это помогло мне. – David

0

Только это сделал для меня работа (NH 3,3):

Join("OuterJoinTable", 
       m => 
       { 
        m.Fetch.Join().Optional(); 
        m.KeyColumn("ForeignKeyColumn"); 

        m.Map(t => t.Field, "FieldName"); 
       }); 
Смежные вопросы