首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从LINQ或HQL创建ICriteria/ICriteria吗?

可以从LINQ或HQL创建ICriteria/ICriteria吗?
EN

Stack Overflow用户
提问于 2010-04-27 23:09:20
回答 3查看 1.2K关注 0票数 2

我正在创建一个方法,它可以从我抽象的filter对象创建NHibernate能够理解的filter (例如,filter,我指的是一组ICriteria对象)。

代码语言:javascript
复制
public static IEnumerable<ICriterion> ToNhCriteria(this MyCriteria criteria)
{
   // T4 generated function
   // lots of result.Add(Expression.Or(Expression.Eq(),Expression.Eq)) expression trees - hard to generate
   // Is there a way to generate HQL/Linq query here istead?
}

然后我想做一些像这样的事情

代码语言:javascript
复制
session.CreateCriteria<Entity>().Add(myCriteria.ToNhCriteria())

要过滤实体,请执行以下操作。问题是使用表达式。方法(Expression.Or等)相当繁琐(方法是生成的,并且我有多个or语句必须以某种方式连接到一个表达式中)。有没有办法避免使用Expression.Or()而使用LINQ或HQL创建ICrietrion / ICriteria?

EN

回答 3

Stack Overflow用户

发布于 2010-06-21 12:52:44

嘿,你看过this问题了吗?它展示了从Linq到NHibernate再到MultiCriteria (同时将linq查询转换为ICriteria)

票数 1
EN

Stack Overflow用户

发布于 2010-04-27 23:22:49

不,那不可能。为什么不使用linq而不是criteria呢?

票数 0
EN

Stack Overflow用户

发布于 2010-04-28 01:43:27

Linq不是最好的解决方案,除非您想在集合端而不是数据库端使用WHERE子句进行过滤。Ayende建议ICriteria API非常适合动态过滤器创建,我使用Restrictions.Disjunction()解决了多个for的问题……在我问这个问题的时候,这个问题简化了很多,我只是没有意识到NHibernate中存在这样的东西:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2722360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档