如何进行查询以返回包含列表中所有ID的对象

纳努·波奈特

我有两个对象:配置文件和标签。每个配置文件可以包含多个标签。在我的搜索页面上,我可以选择多个标签进行搜索。现在,我想要一个查询,以获取具有所有选定标签的所有配置文件。

因此,如果我使用的WhereRestrictionOn().IsIn()配置文件包含至少一个标签,但我需要返回包含列表中所有标签的配置文件。

我还为每个选定的标签尝试了多个Where条件,但是我什么都没有。

我不知道如何执行此操作,非常感谢!

结构:

个人资料:Id

ProfileTag:ProfileId,TagId

标签:Id

映射配置文件

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Agrolink.Application.Models" assembly="Agrolink.Application">
  <class name="Agrolink.Application.Models.Profile" lazy="false" table="Profiles" >

    <id name="Id" column="Id"  >
      <generator class="identity" />
    </id>

    <bag name="Tags" table="ProfileTags" cascade="all-delete-orphan" inverse="true">
      <key column="IdProfile" not-null="true"/>
      <one-to-many class="Agrolink.Application.Models.ProfileTag"  />
    </bag>

  </class>
</hibernate-mapping>

映射ProfileTag

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Agrolink.Application.Models" assembly="Agrolink.Application">
  <class name="Agrolink.Application.Models.ProfileTag" lazy="false" table="ProfileTags" >

    <id name="Id" column="Id"  >
      <generator class="identity" />
    </id>

    <many-to-one name="Profile" class="Agrolink.Application.Models.Profile" column="IdProfile" cascade="save-update" />
    <many-to-one name="Tag" class="Agrolink.Application.Models.Tag" column="IdTag" cascade="none" />

  </class>
</hibernate-mapping>

映射标签

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Agrolink.Application.Models" assembly="Agrolink.Application">
  <class name="Agrolink.Application.Models.Tag" lazy="false" table="Tags" >

    <id name="Id" column="Id"  >
      <generator class="identity" />
    </id>

    <property name="Name" column="Name" />
    <property name="Type"  type="Agrolink.Application.Models.TagType, Agrolink.Application"  column="IdType" />

    <many-to-one name="Parent" class="Agrolink.Application.Models.Tag" column="IdParent" cascade="none" />

    <bag name="Children" table="Tags" cascade="all" inverse="true">
      <key column="IdParent" not-null="true"/>
      <one-to-many class="Agrolink.Application.Models.Tag"  />
    </bag>

  </class>
</hibernate-mapping>

实现此目的的子查询(解决方案):

        Profile p = null;
        Account a = null;
        Institute i = null;

        var q = Session.QueryOver(() => p)
            .JoinAlias(x => x.Account, () => a)
            .JoinAlias(x => x.Institute, () => i)
            .Where(x => x.Type == ProfileType.Expert && x.Status == ProfileStatus.Active);

        if(_keywordIds.Any())
            foreach (var keywordId in _keywordIds)
            {
                Tag t = null;

                var subQ = QueryOver.Of<ProfileTag>()
                    .JoinAlias(pt => pt.Tag, () => t)
                    .Where(() => t.Id == keywordId)
                    .Select(pt => pt.Profile.Id);           

                q.WithSubquery.WhereProperty(() => p.Id).In(subQ);
            }

        if (_institute != null) q.Where(() => i.Id == _institute);

        if (!string.IsNullOrEmpty(_name)) q.Where(Restrictions.Disjunction()
                    .Add(Restrictions.Like("a.FirstName", _name + "%"))
                    .Add(Restrictions.Like("a.LastName", _name + "%"))
                );

        return (PagedList<Profile>) q.List<Profile>().ToPagedList(_page, _itemsPerPage);
拉迪姆·科勒

差不多了,但是我们需要所谓的Detached QueryOver,我们将通过构造来获取 QueryOver.Of

foreach (var keywordId in _keywordIds)
{
    //Tag t = null;

    var subQ = QueryOver.Of<ProfileTag>()
        //.JoinAlias(pt => pt.Tag, () => t)
        //.Where(() => t.Id == keywordId)
        .Where(x => x.Tag.Id == keywordId)
        //.Select(pt => t.Id);           
        .Select(pt => pt.Profile.Id);          

    q.WithSubquery.WhereProperty(() => p.Id).In(subQ);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何进行并行请求并返回包含Javascript中所有并行响应的对象?

来自分类Dev

返回包含int列表中所有ID的列表

来自分类Dev

如何进行比较字段和数组中所有项目的查询

来自分类Dev

如何删除包含列表中所有元素的嵌套列表?

来自分类Dev

如何进行Facebook FQL查询以选择所有朋友

来自分类Dev

Django:如何查询列表中所有字段都存在的对象?

来自分类Dev

如何为列表中所有对象的属性添加值

来自分类Dev

如何返回ID包含某些数字的特定序列的所有记录PostgreSQL查询

来自分类Dev

包含其他列表中所有内容的动态linq查询

来自分类Dev

返回页面中所有iframe的ID

来自分类Dev

如何拼合列表以返回包含所有元素的新列表?

来自分类Dev

如何进行查询以返回包含Servicestack.Ormlite中两个联接表中的值的字典的查询?

来自分类Dev

Java中的查询函数,返回单列中所有值的列表

来自分类Dev

如何进行rest调用返回所有结果或总数(Sharepoint REST API)

来自分类Dev

获取所有salesforce对象中所有字段的列表

来自分类Dev

如何返回字符串中所有具有大写字母的索引的列表?

来自分类Dev

RoR:如何进行查询以返回每个组的总和值?

来自分类Dev

如何获取网页中所有包含/使用的文件的URL列表?

来自分类Dev

如何根据ID列表对EF返回的对象进行排序?

来自分类Dev

如何使用密码查询返回一个数组中所有元素的计数?

来自分类Dev

如何查询mongo db以返回搜索项中所有键的组合?

来自分类Dev

使用复合主键对Table进行Kotlin公开SQL查询,并选择所有包含在给定DTO对象列表中的对象

来自分类Dev

如何获取包含“ ID”属性的网页中所有Web元素的计数?

来自分类Dev

如何动态返回同构对象数组中所有属性的总和?

来自分类Dev

显示单独查询返回的表中所有行的视图

来自分类Dev

如何进行查询以获取用户的所有组,以显示每个组具有的用户(PostgreSQL)

来自分类Dev

如何构造一个MySql查询,该查询返回具有数组中所有值的结果?

来自分类Dev

UWP:如何获取程序集中所有页面对象的列表和相应的 TypeName

来自分类Dev

Django:更改查询集中所有对象的字段值

Related 相关文章

  1. 1

    如何进行并行请求并返回包含Javascript中所有并行响应的对象?

  2. 2

    返回包含int列表中所有ID的列表

  3. 3

    如何进行比较字段和数组中所有项目的查询

  4. 4

    如何删除包含列表中所有元素的嵌套列表?

  5. 5

    如何进行Facebook FQL查询以选择所有朋友

  6. 6

    Django:如何查询列表中所有字段都存在的对象?

  7. 7

    如何为列表中所有对象的属性添加值

  8. 8

    如何返回ID包含某些数字的特定序列的所有记录PostgreSQL查询

  9. 9

    包含其他列表中所有内容的动态linq查询

  10. 10

    返回页面中所有iframe的ID

  11. 11

    如何拼合列表以返回包含所有元素的新列表?

  12. 12

    如何进行查询以返回包含Servicestack.Ormlite中两个联接表中的值的字典的查询?

  13. 13

    Java中的查询函数,返回单列中所有值的列表

  14. 14

    如何进行rest调用返回所有结果或总数(Sharepoint REST API)

  15. 15

    获取所有salesforce对象中所有字段的列表

  16. 16

    如何返回字符串中所有具有大写字母的索引的列表?

  17. 17

    RoR:如何进行查询以返回每个组的总和值?

  18. 18

    如何获取网页中所有包含/使用的文件的URL列表?

  19. 19

    如何根据ID列表对EF返回的对象进行排序?

  20. 20

    如何使用密码查询返回一个数组中所有元素的计数?

  21. 21

    如何查询mongo db以返回搜索项中所有键的组合?

  22. 22

    使用复合主键对Table进行Kotlin公开SQL查询,并选择所有包含在给定DTO对象列表中的对象

  23. 23

    如何获取包含“ ID”属性的网页中所有Web元素的计数?

  24. 24

    如何动态返回同构对象数组中所有属性的总和?

  25. 25

    显示单独查询返回的表中所有行的视图

  26. 26

    如何进行查询以获取用户的所有组,以显示每个组具有的用户(PostgreSQL)

  27. 27

    如何构造一个MySql查询,该查询返回具有数组中所有值的结果?

  28. 28

    UWP:如何获取程序集中所有页面对象的列表和相应的 TypeName

  29. 29

    Django:更改查询集中所有对象的字段值

热门标签

归档