将FluentNHibernate查询限制为不同列表中的值?

时间:2014-07-17 18:39:41

标签: nhibernate fluent-nhibernate

原谅我潜在的新手问题,我已经做了一些搜索和一些玩弄,但我似乎无法产生预期的效果。

我想复制以下查询:

SELECT * FROM ITEM WHERE ItemNumber IN ('00012A', '0034B', 'AB097');

我有一个明确的项目列表,我想限制我的查询,但它产生以下异常:

System.NotSupportedException: Specified method is not supported.

以下是我正在使用的方法:

public IList<Item> GetItemList(List<String> distinctItemList)
{
    var sessionFactory = CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (session.BeginTransaction())
        {
            return session.Query<Item>()
                .Where(x => distinctItemList.Any(y => y == x.ItemNumber)).ToList();
        }
    }
}

有什么想法?我最初成功回归

session.CreateCriteria(typeof (Item)).List<Item>();

..但我似乎无法对此进行修改以允许限制条款。

1 个答案:

答案 0 :(得分:0)

这最终比我最初的想法容易得多:

return session.QueryOver<Item>()
      .Where(i => i.ItemNumber.IsIn(distinctItemList)).List();