我试图返回一个查询单个表并使用 IN 的 SimpleQuery 列表。
我可以使用它来工作
return new List<Jobs>(
ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);
然而,这真的真的很慢。所以我喜欢做这样的事情
SimpleQuery<Job> query =
new SimpleQuery<Job>(@"from Job as j where ? in (j.ServiceId)", ids);
return new List<Job>(query.Execute());
但是我无法让 SimpleQuery 工作。我找不到任何涵盖此内容的文档,并希望有人能够提供帮助。
谢谢
最佳答案
查看 NHibernate HQL 文档 here .
我从您的代码中猜测,您正在执行 HQL 查询以返回 ID 列表中包含 job.ServiceID 的所有作业。
也许沿着这条线,
IQuery q = s.CreateQuery("from Job as j where j.ServiceId in (:serviceIds)");
q.SetParameterList("serviceIds", ids);
顺便说一句,你听说过 NHibernate Lambda Extensions项目?
下面是使用上述库完成的 IN 查询示例。作为使用 HQL 的替代方案,可能会很有趣。
DetachedCriteria after =
DetachedCriteria.For<Person>()
.Add(SqlExpression.In<Person>(p => p.Name,
new string[] { "name1", "name2", "name3" }));
关于Nhibernate HQL where IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401950/