Nhibernate同等标准

时间:2017-05-26 10:56:27

标签: nhibernate

我有一个场景,我必须检查具有给定字符串列表的表ID列表并获取所有相关数据。我知道如何检索一个相同标准的数据。

var criteria = sm.Session.CreateCriteria(GetRegisteredType<Data>());

criteria = criteria.Add(Expression.Eq("Id", "9999"));

我需要使用Id列检查字符串列表。 任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:1)

您是否需要使用基于ICriteria的查询?如果没有,基于LINQ的查询将类似于:

var results = 
    sm.Session
        .Query<Data>()
        .Where(d => listOfStrings.Contains(d.Id))
        .ToList();

但是,您需要警惕字符串列表的大小,因为它们将作为参数传递,并且会受到限制。

答案 1 :(得分:1)

我们假设您有列表:

var list = new string[] { "9999", "1111" };
  1. 标准

    Session.CreateCriteria(GetRegisteredType<Data>()).Add(Restrictions.InG("Id", list));
    
  2. QueryOver

    Session.QueryOver<Data>().Where(x => x.Id.IsIn(list));
    
  3. NHibernate.LINQ

    Session.Query<Data>().Where(x => list.Contains(x.Id))