Подтвердить что ты не робот

Свободный Nhibernate слева

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

Мой составной пользовательский объект создается одной таблицей ( "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);

                        });
    }
}

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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