linq-> hqlプロバイダーの作成
-
27-09-2019 - |
質問
サーバーに接続するクライアントアプリケーションがあります。サーバーは、持続性とクエリに冬眠を使用するため、持続性のために注釈付きの冬眠オブジェクトのセットがあります。
クライアントは、HQLクエリをサーバーに送信し、応答を取り戻します。クライアントには、クエリの結果と基本的な永続性のためにサーバーの冬眠オブジェクトに一致するオブジェクトの自動生成セットがあります。
linqを使用してクエリとHQLを使用してサポートしたいと思います。これにより、クエリはタイプセフで速く構築します(HQL String Queriesのタイプミスはありません)。私は次のことを見回しましたが、私が持っているものにそれらを合わせる方法を見ることができません。
- NhibernateのLINQプロバイダー - nhibernate isessionとisessionFactoryを使用する必要があります。
- linqextender-オブジェクトに多くの注釈が必要であり、ベースタイプを拡張し、侵襲的すぎる
私が本当に欲しいのは、HQLクエリを構築するための簡単なプロセス構造を私に与えてくれるものです。 C#開発者の1人がカスタムプロバイダーの作成方法について書いた15ページの記事のほとんどを読みましたが、主に表現ツリーの複雑さのためにかなり困難です。
Linq-> HQL翻訳を実装するためのアプローチを提案できますか?おそらく、表現ツリーをよりSQL/hqlishにクリーンアップするライブラリ。
select/from/where/group by/order by/joinsをサポートしたいと思います。サブ征服についてはあまり心配していません。
解決 2
そこで、私はこのライブラリRe-Linqを見つけました。これは、NhibernateがLINQ機能を実装するために使用するものです。表現の周りの多くのノイズを整理しているように見えますが、実装を作成するためにトップにやるべきことがかなりあります。
他のヒント
これを行うライブラリはないと思います。あなた自身のプロバイダーを書くことができます。そのようなプロバイダーを書くのに役立つツールキットがあります。例えば iqtoolkit. 。ただし、自分のプロバイダーを書くことはまだ多くの仕事になることに注意してください。投資する価値があるかどうかはわかりません。