Fluent Nhibernate left join
Asked Answered
B

2

17

I want to map a class that result in a left outer join and not in an innner join.

My composite user entity is made by one table ("aspnet_users") and an some optional properties in a second table (like FullName in "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);

                        });
    }
}

this mapping result in an inner join select so no result come out is second table as no data. I'd like to generate an left join.

Is this possible only at query level?

Bloodstone answered 30/8, 2009 at 16:3 Comment(0)
C
27

Try the Optional() method.

Join("Users", m =>
{
  m.Optional();
  m.Map(x => x.FullName);
});
Centime answered 31/8, 2009 at 8:23 Comment(0)
S
0

Only this did work for me (NH 3.3):

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

                    m.Map(t => t.Field, "FieldName");
                });
Simaroubaceous answered 2/6, 2014 at 14:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.