Свободное владение Nhibernate левый - PullRequest
16 голосов
/ 30 августа 2009

Я хочу отобразить класс, который приведет к левому внешнему соединению, а не к внутреннему соединению.

Моя составная пользовательская сущность состоит из одной таблицы («aspnet_users») и некоторых необязательных свойств во второй таблице (например, FullName в «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);

                        });
    }
}

этот результат сопоставления во внутреннем выборе соединения, поэтому результат не является второй таблицей, поскольку отсутствуют данные. Я хотел бы создать левое соединение.

Возможно ли это только на уровне запроса?

Ответы [ 2 ]

26 голосов
/ 31 августа 2009

Попробуйте метод Optional().

Join("Users", m =>
{
  m.Optional();
  m.Map(x => x.FullName);
});
0 голосов
/ 02 июня 2014

Только это сработало для меня (NH 3.3):

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

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