2009-08-30 18 views
16

Quiero asignar una clase que dé como resultado una combinación externa izquierda y no una unión innner.Fluent Nhibernate left join

Mi entidad de usuario compuesta se compone de una tabla ("aspnet_users") y algunas propiedades opcionales en una segunda tabla (como FullName en "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); 

         }); 
    } 
} 

este mapeo da como resultado una combinación interna de seleccionar para que no salga ningún resultado es la segunda tabla como sin datos. Me gustaría generar una combinación de izquierda.

¿Esto solo es posible a nivel de consulta?

Respuesta

26

Pruebe el método Optional().

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

Gracias Esto funcionó! – Ronnie

+2

¡Woo! Esto me ayudó. – David

0

Sólo este trabajo para mí (NH 3.3):

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

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