問題タブ [queryover]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - 複雑なオブジェクト グラフでの Queryover API を使用した NHibernate Eager Loading
一気にロードしたいかなり複雑なオブジェクト グラフがあります。
サンプルには、デイログ結果を持つデイログ テストを持つデイログがあります。
Daylog テストには Testkeys があり、Daylog Results には Resultkeys があり、TestKeys には Resultkeys があります。
QueryOver API と Future を使用して、これらすべてを 1 つのクエリとして実行しています。グラフ全体をインスタンス化するために NHibernate が必要とするすべてのデータは、NHProf によって検証されて返されます。
ただし、Testkey と ResultKey の間の関係を具体的に読み込んでいるにもかかわらず、その関係を表すプロキシを使用することになります。
このクエリ全体は、おそらく QueryOver API の理解が不十分であることを表していると思います。そのため、あらゆるアドバイスをお願いしますが、主に、後で結果のリストではなくプロキシを取得する理由を理解したいと思います。 daylogresult.resultkey.testkey.results を取得しようとしています。
何か助けはありますか?
nhibernate - nhibernate(およびクエリオーバー)を使用して、複数のネストされた関連付けを熱心にフェッチする
複数のネストされたアソシエイトを持つデータベースがあります。基本的に、構造は次のとおりです。
特定の日付に販売されたすべての注文に基づいてレポートを生成する必要があります。必要な情報を生成するには、言及されたすべての関連付けをトラバースする必要があります。
すべてのテーブルを一緒に結合しようとすると、6 つのテーブルを結合することになることを考えると、多くの冗長データを含む非常に大きなデカルト結合になるため、やり過ぎです。以下のコード:
上記は機能しますが、それぞれにいくつかの注文アイテムがあり、それぞれが複数のトラックで構成されるプレイリストを含む少数の注文でも、結果は数千のレコードに爆発し、追加の注文ごとに指数関数的に増加します。
最善かつ最も効率的なアプローチは何でしょうか? 私は現在、データベースクエリの数を大幅に削減するバッチロードを有効にしようとしましたが、それでも私には良いアプローチとは思えませんが、「簡単な回避策」のようです。
膨大な量のデータがあるため、すべてのデータを 1 回の SQL クエリでロードする必要はありません。アソシエーションごとに 1 つの SQL クエリがあれば完璧だと思います。理想的には、最初にすべての注文を取得し、次にその注文のすべての注文アイテムを取得して関連するコレクションにロードし、次に各注文アイテムのプレイリストをロードする、というようになります。
.RootCriteria
また、 Criteria API にアクセスして使用できるため、特に QueryOver である必要はありません。
どんな助けでも大歓迎です!
nhibernate - 結合と区別を伴うQueryOver
次のQueryOverを使用します。
これにより、次のものが作成されます。
でも私はしたい
連絡先のすべてのプロパティを選択したい。
よろしく、トーマス
c# - Fluent nHibernate を使用したプロパティによるオブジェクトの子コレクションのフリッター
無知で申し訳ありませんが、私は nHibernate を初めて使用し、nHibernate クエリで子コレクションをフィルタリングしようとして概念的な問題を抱えています。
私のオブジェクト モデルには、このように設定された User と Task の 2 つのエンティティが含まれています
これらの nHibernate マッピングは次のとおりです。
私のデータベースには、このように入力した「タスク」と「ユーザー」の2つのテーブルがあります
私がやろうとしているのは、「タスク」コレクション内のアクティブなタスクのみを持つ特定のユーザーを返すクエリを実行することです
このクエリを実行すると、Tasks コレクションに 3 つの Task オブジェクトを持つ単一のユーザー オブジェクトが返されると予想されますが、代わりに、同じタスク オブジェクト (task.Id = 3) の 3 つのコピーが返され、そのすべてに 5 つの Task がすべて含まれています。それぞれのコレクション。
私がやろうとしていることは実際に可能ですか、それとも代わりに Task エンティティでクエリを実行する必要がありますか?
手動のフィルタリングをいじる必要なく、ユーザーのアクティブなタスクを表示できると便利なので、そうではないことを願っています。
nhibernate - NHibernate QueryOver<> 問題は、子エンティティの親コレクションを返します
子エンティティのコレクションを持つ親エンティティ Category_Types があります。これらの子エンティティのそれぞれに、子エンティティ Expenses のコレクションがあります。
Category_Types >> カテゴリ (1:n)、カテゴリ >> 経費 (1:n)
特定の日付間の特定の Category_Type の総費用を、次のマップされていないクラスにクエリしたい
私は次のSQLクエリを持っています:
そのため、QueryOver<> を使用してクエリを作成し、SQL クエリと同じ結果を取得し、次のように結果を EntityTotals<> クラスに取得しました。
このクエリをテストすると、次の例外が発生しました。
プロパティを解決できませんでした: ct of: Expenses
そのため、Category_Types の一部のプロパティのみを次のマップされていないクラスに取得しようとしました
Category_Types のプロパティ Cat_Type_Id のみを取得する次のクエリを使用すると、正常に動作します。
最初のクエリから Category_Types の完全なオブジェクトを取得するにはどうすればよいですか?
ありがとう ;
nhibernate - NHibernate QueryOver 構文での current_timestamp の使用
SQL と HQL を除く他の nhibernate クエリ メソッドで current_timestamp の使用を要求することは可能ですか?
問題を解決するために、ある種の IUserType クラスの DbDateTime などを作成することを考えていましたが、それを達成する方法が正確にはわかりませんでした。
誰にもアイデアはありますか?
私が欲しいものの例:
c# - NhibernateQueryOver左外部結合と条件
オンラインでいくつかのリソースを見つけましたが、実際にはこれを整理することができませんでした
基本的に、2つの左外部結合を持つクエリがあります
これは無効な方法かもしれませんが、壊れていないようです。ここで、外部結合を残した2つのテーブルで、これらの両方のテーブルのDeleted列がfalseであることを確認します。
ただし、その制限を追加すると、ニュース投稿の外部キー列にデータが入力された場合にのみ結果が返されますが、これはnull可能であり、なぜそれを左外部結合にしたのかは望ましくありません。
基本的にそれを作るための最良の方法は何ですか
私は複数の質問、先物、論理和を調べましたが、どのアプローチを取るべきかわかりません。明らかに、これを行うためのいくつかの方法(私の腸が私に言う悪い方法)を考えることができますが、正しい方法は何ですか?:)
ありがとう
編集-承認された回答の変更
join - NHibernate 3 で検索クエリを実装する方法 (NHibernate.Linq を使用)
NHibernate を使用して、いくつかの異なるテーブルからパラメーターをフィルター処理し、NHibernate の遅延読み込みを利用できるやや妥当な SQL を生成する検索クエリを作成しようとしています。オンラインでさまざまなヒントを読むと、次のスニペットのように、QueryOver オブジェクトを使用して、使用されているパラメーターを条件付きで追加することが、最新かつ最高の方法のようです。
(イベントにはサイトへの外部キーがあります)
2 つの質問があります。親オブジェクトだけでなく、子オブジェクトをフィルター処理するにはどうすればよいですか? 上記のサンプル コードでは、一致するイベントを持つすべてのサイトが表示されますが、そのサイト内では、一致するイベントのみが必要です。結合またはサブクエリを使用することになっている場合、どのように使用しますか? 結合またはサブクエリによる遅延読み込みでツリーのような階層を維持することについて混乱しています。
編集:これは回答済みです。ありがとうございます!
or 句を追加するにはどうすればよいですか? Disjunction オブジェクトへの参照を見つけましたが、QueryOver メソッドを使用して利用できるようには見えません。
編集: サイト基準でフィルタリングされたサイト (最上位オブジェクト) のリストを作成したいのですが、各サイトには、イベント基準でフィルタリングされたイベントのリストが必要です。
次のような SQL が生成されることを期待しています。
nhibernate - NHibernate QueryOverを使用して、日付間にタイプセーフな制限を追加するにはどうすればよいですか?
次のことを考慮してくださいQueryOver
(クォーターとセンターは渡される変数です):
このクエリは完全に機能しますが、次の制限を変更してマジックストリングを削除したいと思います。
エンティティは次のとおりです(簡潔にするために省略)。
では、これらのマジックストリングを削除できる新しいQueryOver拡張機能を使用したタイプセーフな方法は何でしょうか。