创建Linq-> HQL提供程序

时间:2010-06-16 10:40:59

标签: linq hql translation provider

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

客户端将HQL查询发送到服务器并获取响应。客户端有一组自动生成的对象,它们与服务器hibernate对象匹配,以查询结果和基本持久性。

我想支持使用Linq查询以及Hql,因为它使查询类型安全且构建更快(在HQL字符串查询中不再有拼写错误)。我环顾四周,但我看不出如何让它们与我所拥有的相符。

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

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

任何人都可以建议实施Linq的方法 - > HQL翻译?也许是一个将表达式树清理成更多SQL / HQLish的库。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

re-linq