2009-08-30 28 views
16

Tôi muốn ánh xạ một lớp dẫn đến kết nối bên ngoài bên trái và không phải trong một kết nối bẩm sinh.Fluent Nhibernate left tham gia

Thực thể người dùng tổng hợp của tôi được tạo bởi một bảng ("aspnet_users") và một số thuộc tính tùy chọn trong bảng thứ hai (như FullName trong "người dùng").

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

         }); 
    } 
} 

kết quả ánh xạ này trong kết nối bên trong để không có kết quả là bảng thứ hai không có dữ liệu. Tôi muốn tạo ra một tham gia trái.

Điều này có thể chỉ ở cấp truy vấn không?

Trả lời

26

Thử phương thức Optional().

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

Cảm ơn này làm việc! – Ronnie

+2

Woo! Điều này đã giúp tôi. – David

0

Chỉ có điều này đã làm việc cho tôi (NH 3.3):

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

        m.Map(t => t.Field, "FieldName"); 
       }); 
Các vấn đề liên quan