代码之家  ›  专栏  ›  技术社区  ›  Mike Q

创建LINQ->HQL提供程序

  •  3
  • Mike Q  · 技术社区  · 14 年前

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

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

    我希望支持使用linq进行查询以及hql,因为它使查询类型安全且生成速度更快(hql字符串查询中不再有拼写错误)。我环顾了一下下面的内容,但我不知道如何让它们符合我的要求。

    • NHibernate的LINQ提供商-需要使用NHibernate ISession和ISessionFactory,我没有。
    • Linqexter-需要对对象进行大量注释,并扩展基类型,这太具有侵入性了

    我真正想要的是生成一个易于处理的结构来构建HQL查询。我读过一篇由C开发人员撰写的关于如何创建自定义提供者的长达15页的文章,其中大部分内容都令人担忧,主要是因为表达式树的复杂性。

    有人能建议一种实现linq->hql翻译的方法吗?可能是一个将表达式树清理成更SQL/HQlish的库。

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Steven    14 年前

    我认为没有图书馆能做到这一点。您可以编写自己的提供者。有工具箱可以帮助您编写这样的提供者。例如 IQToolkit . 但是请注意,编写您自己的提供商仍然需要很多工作。我不确定这是否值得投资。

        2
  •  1
  •   Mike Q    14 年前

    所以我发现了这个库re-linq,这是nhibernate用来实现它的linq功能的。似乎清理了大量的表达周围的噪音,虽然似乎有一个公平的位上面做的创建一个实现。

    re-linq