我想映射一个导致左外连接而不是内在连接的类。
我的复合用户实体由一个表(“aspnet_users”)和第二个表中的一些可选属性(如“users”中的FullName)组成。
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);
});
}
}
这个映射结果在内连接选择中,所以没有结果出来是第二个表没有数据。我想生成一个左连接。
这只能在查询级别进行吗?
答案 0 :(得分:26)
尝试Optional()
方法。
Join("Users", m =>
{
m.Optional();
m.Map(x => x.FullName);
});
答案 1 :(得分:0)
只有这对我有用(NH 3.3):
Join("OuterJoinTable",
m =>
{
m.Fetch.Join().Optional();
m.KeyColumn("ForeignKeyColumn");
m.Map(t => t.Field, "FieldName");
});