繁体   English   中英

如何基于其关联选择实体,例如原始SQL中的WHERE IN查询

[英]How to select an entity based on it's association, like a WHERE IN query in raw SQL

假设我有一个类似的实体:

Parent

它有一个孩子的集合:

Parent.Children

我正在尝试让所有父母将children.Id放在列表中。

Session.QueryOver<Parent>( () => parentAlias)
.JoinAlias( () => pareintAlias.Children, () => childrenAlias)
.WHereResitrictionOn(childrenAlias.Id).IsIn(childrenList)
.List<Parent>();

但是上面的方法不起作用,它表示索引引用超出范围或类似。

更新

我的桌子:

家长编号

儿童-parentId

我的实体有一个链接到Children表的HasMany集合。

因此查询将类似于:

SELECT * 
FROM Parents p
    INNER JOIN Children c ON (c.parentID = p.id)
WHERE c.id in (SELECT id from Children WHERE id in (....) )

我有一个孩子名单:

List<Children> childrenList;

更新:需要指定<Child>

使用QueryOver

var results = Session.QueryOver<Parent>()
    .JoinQueryOver<Child>(parent => parent.Children)
        .WHereResitrictionOn(child => child.Id).IsIn(childrenList)
    .List<Parent>();

或使用LINQ

var results = (from parent in Session.Query<Parent>()
               from child in parent.Children
               where child.Id.IsIn(childrenList)
               select parent).List();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM