我对FLuent NHibernate有一点问题。 我的课程是:
public class Usuario
{
public virtual long IdUsuario { get; set; }
public virtual string AdSamAccountName { get; set; }
public virtual string Email { get; set; }
public virtual TrabajadorWenco TrabajadorWenco { get; set; }
public virtual IList<AsignacionProyecto> ProyectosAsignados { get; set; }
public virtual IList<UsuarioArea> AreasUsuario { get; set; }
}
public class Area
{
public virtual long IdArea { get; set; }
public virtual string Nombre { get; set; }
public virtual string Descripcion { get; set; }
public virtual IList<UsuarioArea> UsuariosArea { get; set; }
public virtual IList<Proyecto> ProyectosArea { get; set; }
}
public class UsuarioArea
{
public virtual long IdUsuarioArea { get; set; }
public virtual Usuario Usuario { get; set; }
public virtual Area Area { get; set; }
public virtual Rol Rol { get; set; }
}
我的地图是:
class UsuarioMap : ClassMap<Usuario>
{
public UsuarioMap()
{
Schema("dbo");
Table("usuario");
Id(x => x.IdUsuario).Column("id_usuario")
.GeneratedBy.HiLo("dbo.nh_hilo", "next_hi", "1000", @"table_name = 'usuario'");
References(x => x.TrabajadorWenco).Column("id_trabajador_wenco").Not.LazyLoad();
HasMany(x => x.ProyectosAsignados).KeyColumn("id_asignacion_proyecto");
HasMany(x => x.AreasUsuario).KeyColumn("id_usuario_area").Not.LazyLoad();
Map(x => x.AdSamAccountName).Column("ad_sam_account_name");
Map(x => x.Email).Column("email");
}
}
public class UsuarioAreaMap : ClassMap<UsuarioArea>
{
public UsuarioAreaMap()
{
Schema("sgh");
Table("usuario_area");
Id(x => x.IdUsuarioArea).Column("id_usuario_area")
.GeneratedBy.HiLo("dbo.nh_hilo", "next_hi", "1000", @"table_name = 'usuario_area'");
References(x => x.Usuario).Column("id_usuario");
References(x => x.Area).Column("id_area").Not.LazyLoad();
Map(x => x.Rol).CustomType(typeof(Rol)).Column("id_rol");
}
}
public class AreaMap : ClassMap<Area>
{
public AreaMap()
{
Schema("sgh");
Table("area");
Id(x => x.IdArea).Column("id_area")
.GeneratedBy.HiLo("dbo.nh_hilo", "next_hi", "1000", @"table_name = 'area'");
HasMany(x => x.UsuariosArea).KeyColumn("id_area");
HasMany(x => x.ProyectosArea).KeyColumn("id_area");
Map(x => x.Nombre).Column("nombre");
Map(x => x.Descripcion).Column("descripcion");
}
}
我知道在UsuarioArea表中Usuario有两条Id = 1的记录,但是当我尝试创建一个FindById时,它返回给我一个Usuario,但只有一个项目在UsuariosArea列表中。
关于为什么它只返回列表中的一个项目的任何线索?
答案 0 :(得分:1)
您需要在hasmany映射
中引用您的外键尝试将其更改为:
HasMany(x => x.AreasUsuario).KeyColumn("id_usuario").Not.LazyLoad();