C# NHibernate连接多个表
我在网上搜索过,找不到满意的答案 我正在尝试编写QueryOver/CreateCriteria查询,以便在连接3个表之后从1个表中获取字段 SQL查询本身很简单,但我无法将其转换为上述格式 查询:C# NHibernate连接多个表,c#,nhibernate,C#,Nhibernate,我在网上搜索过,找不到满意的答案 我正在尝试编写QueryOver/CreateCriteria查询,以便在连接3个表之后从1个表中获取字段 SQL查询本身很简单,但我无法将其转换为上述格式 查询: select LOC_ID from VISITOR_VISIT vv join VISIT v on vv.VISIT_ID = v.VISIT_ID join VISITOR_LAY_ENTRY_POINTS vlep on vlep.VLEP_ID = v.VEP_ID where vv.VI
select LOC_ID from
VISITOR_VISIT vv
join VISIT v on vv.VISIT_ID = v.VISIT_ID
join VISITOR_LAY_ENTRY_POINTS vlep on vlep.VLEP_ID = v.VEP_ID
where vv.VIS_ID = PARAMETER
//加入别名以便于访问查询的所有部分
VisitorVisitorVisitalias=null;
访问visitAlias=null;
VisitorLayEntryPoints=visitorLayEntryPointsAlias=null;
IList位置ID=
session.QueryOver()
.JoinAlias(()=>visitorVisitAlias.VisitId,()=>visitAlias)
.JoinAlias(()=>visitAlias.VepId,()=>visitorLayEntryPointsAlias)
//取决于你的LocId在哪里
.选择(()=>visitorVisit.LocId)
//我假设您的LocId是int,如果是字符串,请切换到string
.List();
当然,只有在映射配置(XML或Fluent-NHibernate)中设置了正确的关联时,所有这些才起作用,您应该在映射配置中定义两个连接条件
这将有助于提供此查询中三个表的更多上下文或模式。例如,我不确定哪个表
LOC\u ID
来自哪个表。此外,如果需要只返回一列,则可能需要考虑有关投影的阅读。
// Join aliases for ease of getting access to all parts of the query
VisitorVisit visitorVisitAlias = null;
Visit visitAlias = null;
VisitorLayEntryPoints = visitorLayEntryPointsAlias = null;
IList<int> locationIds =
session.QueryOver<VisitorVisit>()
.JoinAlias(() => visitorVisitAlias.VisitId, () => visitAlias)
.JoinAlias(() => visitAlias.VepId, () => visitorLayEntryPointsAlias)
// Depends on where your LocId is
.Select(() => visitorVisit.LocId)
// I assumed your LocId is an int, switch to string if it's a string
.List<int>();