Ответ 1
Попробуйте метод Optional()
.
Join("Users", m =>
{
m.Optional();
m.Map(x => x.FullName);
});
Я хочу отобразить класс, который приведет к левому внешнему соединению, а не к внутреннему соединению.
Мой составной пользовательский объект создается одной таблицей ( "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);
});
}
}
это преобразование приводит к выбору внутреннего соединения, поэтому результат не получается, а вторая таблица - как никакие данные. Я хотел бы создать левое соединение.
Возможно ли это только на уровне запросов?
Попробуйте метод Optional()
.
Join("Users", m =>
{
m.Optional();
m.Map(x => x.FullName);
});
Только это работало для меня (NH 3.3):
Join("OuterJoinTable",
m =>
{
m.Fetch.Join().Optional();
m.KeyColumn("ForeignKeyColumn");
m.Map(t => t.Field, "FieldName");
});