C# Fluent NHibernate在加载时返回一项
我对流利的NHibernate有点问题。 我的课程是:C# Fluent NHibernate在加载时返回一项,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我对流利的NHibernate有点问题。 我的课程是: public class Usuario { public virtual long IdUsuario { get; set; } public virtual string AdSamAccountName { get; set; } public virtual string Email { get; set; } public virtual Trabajado
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; }
}
公共类Usuario
{
公共虚拟长IdUsuario{get;set;}
公共虚拟字符串AdSamAccountName{get;set;}
公共虚拟字符串电子邮件{get;set;}
公共虚拟TrabajadorWenco TrabajadorWenco{get;set;}
公共虚拟IList ProyectosAsignados{get;set;}
公共虚拟IList区域SUSUARIO{get;set;}
}
公共课区
{
公共虚拟长IDrea{get;set;}
公共虚拟字符串Nombre{get;set;}
公共虚拟字符串描述符{get;set;}
公共虚拟IList UsuariosArea{get;set;}
公共虚拟IList ProyectosArea{get;set;}
}
公营用地
{
公共虚拟长IDU区域{get;set;}
公共虚拟Usuario Usuario{get;set;}
公共虚拟区域{get;set;}
公共虚拟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");
}
}
类映射:类映射
{
公共地图()
{
模式(“dbo”);
表(“usuario”);
Id(x=>x.IdUsuario).列(“Id\u usuario”)
.GeneratedBy.HiLo(“dbo.nh_HiLo”,“next_hi”,“1000”,“table_name='usuario'”);
引用(x=>x.TrabajadorWenco).Column(“id_trabajador_wenco”).Not.LazyLoad();
HasMany(x=>x.ProyectosAsignados).KeyColumn(“id_asignacion_proyecto”);
HasMany(x=>x.areasuario).KeyColumn(“id\u usuario\u area”).Not.LazyLoad();
Map(x=>x.AdSamAccountName).Column(“ad\u sam\u account\u name”);
Map(x=>x.Email)列(“Email”);
}
}
公共类区域映射:类映射
{
公共区域地图()
{
模式(“sgh”);
表(“usuario_区域”);
Id(x=>x.idusuario区域)。列(“Id\u usuario\u区域”)
.GeneratedBy.HiLo(“dbo.nhu HiLo”,“next_hi”,“1000”,“table_name='usuario_area'”);
参考文献(x=>x.Usuario)。列(“id_Usuario”);
引用(x=>x.Area).Column(“id_Area”).Not.LazyLoad();
Map(x=>x.Rol).CustomType(typeof(Rol)).Column(“id_Rol”);
}
}
公共类区域映射:类映射
{
公共区域地图()
{
模式(“sgh”);
表(“面积”);
Id(x=>x.IdArea).列(“Id\U区域”)
.GeneratedBy.HiLo(“dbo.nhu HiLo”,“next_hi”,“1000”,“table_name='area'”);
HasMany(x=>x.UsuariosArea).KeyColumn(“id_区域”);
HasMany(x=>x.ProyectosArea).KeyColumn(“id_区域”);
Map(x=>x.Nombre).Column(“Nombre”);
映射(x=>x.descripion).Column(“descripion”);
}
}
我知道在表Usuario区域中有两条Id=1的Usuario记录,但当我尝试查找一个Id时,它会返回一条Usuario,但UsuariosArea列表中只有一项
关于为什么它只返回列表中的一项,有什么线索吗?您需要在hasmany映射中引用外键 尝试将其更改为:
HasMany(x => x.AreasUsuario).KeyColumn("id_usuario").Not.LazyLoad();
假设我的外键是“id_usuario”,是的。它对我有用:)。Thxs