2009-08-30 32 views
16

左外部結合となり、内部結合ではないクラスをマップしたいと思います。Fluent Nhibernate left join

複合ユーザーエンティティは、1つのテーブル(「aspnet_users」)と2番目のテーブルの一部のオプションプロパティ(「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); 

         }); 
    } 
} 

このマッピング結果は内部結合選択になります。結果は出力されません。第2のテーブルはデータなしです。私は左の結合を生成したいと思います。

これはクエリレベルでのみ可能ですか?

答えて

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"); 
       });