2009-08-30 195 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"); 
       });