创建Linq->HQL提供程序

创建Linq->HQL提供程序,linq,hql,translation,provider,Linq,Hql,Translation,Provider,我有一个连接到服务器的客户端应用程序。服务器使用hibernate进行持久化和查询,因此它有一组带注释的hibernate对象进行持久化 客户机向服务器发送HQL查询并返回响应。客户机有一组自动生成的对象,这些对象与服务器hibernate对象相匹配,用于查询结果和基本持久性 我希望支持使用Linq进行查询以及使用Hql,因为它可以使查询类型安全,并且可以更快地在Hql字符串查询中构建更多的拼写错误。我环顾了以下几点,但我不知道如何让它们与我现有的相匹配 NHibernate的Linq提供程序-

我有一个连接到服务器的客户端应用程序。服务器使用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。不要太担心子查询。

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

因此我找到了这个库,它是NHibernate用来实现其linq功能的库。似乎清理了很多关于表达式的杂音,尽管在创建一个实现方面似乎还有很多事情要做