3

サーバーに接続するクライアント アプリケーションがあります。サーバーは永続化とクエリに hibernate を使用するため、永続化のために注釈付きの一連の hibernate オブジェクトがあります。

クライアントは HQL クエリをサーバーに送信し、応答を取得します。クライアントには、クエリ結果と基本的な永続性のためにサーバーの休止状態オブジェクトと一致する、自動生成された一連のオブジェクトがあります。

Linq を使用したクエリと Hql の使用をサポートしたいと思います。これにより、クエリがタイプセーフになり、構築が速くなります (HQL 文字列クエリのタイプミスがなくなります)。私は以下を見回しましたが、私が持っているものにそれらを合わせる方法がわかりません。

  • NHibernate の Linq プロバイダー - 私が持っていない NHibernate ISession と ISessionFactory を使用する必要があります
  • LinqExtender - オブジェクトに多くの注釈を付け、基本型を拡張する必要があり、侵略的すぎる

私が本当に望んでいるのは、HQL クエリを構築するための処理しやすい構造を生成してくれるものです。カスタム プロバイダーの作成方法について C# 開発者の 1 人が書いた 15 ページの記事のほとんどを読んだことがありますが、主に式ツリーの複雑さのためにかなり難解です。

Linq -> HQL 変換を実装するためのアプローチを提案できる人はいますか? おそらく、式ツリーをより SQL/HQLish なものにクリーンアップするライブラリです。

select/from/where/group by/order by/joins をサポートしたいと思います。サブクエリについてはあまり心配していません。

4

2 に答える 2

1

これを行うライブラリはないと思います。独自のプロバイダーを作成できます。このようなプロバイダーを作成するのに役立つツールキットがあります。たとえばIQToolkit。ただし、独自のプロバイダーを作成するのは依然として大変な作業になることに注意してください。投資する価値があるかどうかはわかりません。

于 2010-06-16T11:39:16.487 に答える
1

そこで、NHibernate が LINQ 機能を実装するために使用するこのライブラリ re-linq を見つけました。実装を作成するために上に行うべきことはかなりあるようですが、式に関する多くのノイズを整理しているようです。

再リンク

于 2010-06-18T10:16:52.523 に答える