【问题标题】:Creating a Linq->HQL provider创建一个 Linq->HQL 提供程序
【发布时间】:2010-06-16 10:40:58
【问题描述】:

我有一个连接到服务器的客户端应用程序。服务器使用 hibernate 进行持久化和查询,因此它有一组带注释的 hibernate 对象用于持久化。

客户端向服务器发送 HQL 查询并获得响应。客户端有一组自动生成的对象,这些对象与服务器休眠对象相匹配,用于查询结果和基本持久性。

我想支持使用 Linq 和 Hql 进行查询,因为它使查询类型安全且构建速度更快(HQL 字符串查询中不再有拼写错误)。我查看了以下内容,但不知道如何让它们适合我所拥有的。

  • NHibernate 的 Linq 提供程序 - 需要使用我没有的 NHibernate ISession 和 ISessionFactory
  • LinqExtender - 需要对对象进行大量注释并扩展基本类型,过于侵入性

我真正想要的是能够为我生成一个易于处理的结构来构建 HQL 查询的东西。我已经阅读了其中一位 C# 开发人员撰写的关于如何创建自定义提供程序的 15 页文章的大部分内容,这篇文章非常令人担忧,主要是因为表达式树的复杂性。

谁能建议一种实现 Linq -> HQL 翻译的方法?也许是一个库,可以将表达式树清理成更 SQL/HQLish 的东西。

我想支持 select/from/where/group by/order by/joins。不太担心子查询。

【问题讨论】:

    标签: linq hql translation provider


    【解决方案1】:

    我认为没有任何图书馆可以做到这一点。您可以编写自己的提供程序。有一些工具包可以帮助您编写这样的提供程序。例如IQToolkit。但请注意,编写自己的提供程序仍然需要大量工作。我不确定是否值得投资。

    【讨论】:

      【解决方案2】:

      所以我发现这个库 re-linq 是 NHibernate 用来实现其 LINQ 功能的。似乎清理了表达式内容周围的很多噪音,尽管在创建实现方面似乎还有很多工作要做。

      re-linq

      【讨论】:

        猜你喜欢
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多