2009-08-30 122 views
16

我想映射一個導致左外連接而不是內連接的類。Fluent Nhibernate left join

我的複合用戶實體由一個表(「aspnet_users」)和第二個表中的一些可選屬性(如「用戶」中的FullName)構成。

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 2009-09-01 09:29:06

+2

嗚!這幫助了我。 – David 2011-02-25 15:59:09

0

只有這爲我所做的工作(NH 3.3):

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

        m.Map(t => t.Field, "FieldName"); 
       });