問題タブ [dynamicquery]
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.
dynamicquery - テーブル定義の列を使用して動的クエリ エンジンを構築した人はいますか?
アプリケーション フィールドを含む「フィールド」というテーブルがあります。このテーブルには、各フィールド (TableName、ColumnName、JoinType (inner/outer)) のメタデータを格納します。
私は何かが働いていますが、私が望むほどきれいではありません。
誰もこれに取り組んだことがありますか?
より良い慣行に関するいくつかのアイデアを探しています。
c# - 強化されたDynamicQuery?
最近DynamicQueryAPIの使用を開始しましたが、多くの制限があることがすぐに明らかになりました。オンラインで少なくとも1つの改善点を見つけました。列挙型引数のサポートですが、このAPIがアクティブに維持されていないことは明らかです(あるとしても)。
私が間違っていて、改善されたバージョンを維持している人がいる場合は、リンクを投稿してください!
あるいは、同様の目標を持つ別のアクティブなプロジェクトも興味深いでしょう。
(明確化:実行時に文字列を解析しようとしています。)
performance - HibernateCritera API と Oracle を使用した動的クエリ - パフォーマンス
Hibernate を使用して Oracle からデータを取得する必要がありますが、問題は、クエリに渡されるパラメーターの数が常に同じではないことです。
簡単にするために、次のクエリを考えてみましょう。
COL_1、COL_2、...、COL_N を TAB_1 から選択 (COL_1 は (?、?、... ?) 内)
in 句に渡されるパラメータの数は 1 ~ 500 です。数が 1 ~ 50 程度の場合は非常に高速に動作しますが、200 の場合はクエリの実行 (解析、説明計画の作成、クエリの実行) に数秒かかります。 . インデックスが作成され、使用されます - チェックされました。
クエリは動的に作成されるため、Hibernate Criteria API を使用します。最初のクエリ (パラメータが 100 個を超える場合) では 3 ~ 5 秒かかりますが、次のクエリでは (パラメータの数が異なる場合でも) より速く動作します。最初のクエリの応答時間を改善したいと考えています。その場合、Hibernate が必須であると仮定して何ができますか?
私はこの動的クエリを削除し、xml ファイルに名前付きクエリとしていくつかの静的クエリを作成します (その場合、これらのクエリは最初にプリコンパイルされます)。たとえば、
1) パラメーターの数が 50 未満の場合は 1 つのクエリ。
この場合、30 個のパラメーターがある場合、クエリは次のようになります。
TAB_1 から COL_1、COL_2、...、COL_N を選択します。COL_1 は (PAR_1、PAR_2、...、PAR_30、-1、-1、...、-1 ?) にあります。
2) 数が 50 から 100 の間の場合は 2 つ目など。
問題は、名前付きクエリと HQL を使用するのはそれほど単純ではないことです (JDBC では簡単です)。HQL では、リストのみを渡し、そのリストでパラメーターの数を指定しません。つまり、実際にはクエリは 1 つだけです。
それを解決するオプションはありますか?
ちなみに、新しいクエリごとに説明プランが実行されると思ったので、たとえば:
(a) select COL_1, COL_2, ..., COL_N from TAB_1 where COL_1 in (?, ?, ..., ?) <100> - 説明計画を作成する必要があります
(b) select COL_1, COL_2, ..., COL_N from TAB_1 where COL_1 in (?, ?, ..., ?) <100> - EXPLAIN PLAN はすでにキャッシュに存在するため作成されません
(c) select COL_1, COL_2, ..., COL_N from TAB_1 where COL_1 in (?, ?, ..., ?) <120> - 説明プランを作成する必要があります (120 個のパラメーターを持つクエリの説明プランはありません) )しかし、(a)に比べて時間がかからず、(b)とほぼ同じなので、同様のクエリが以前に実行された場合、おそらくOracleはこのプランをより速く作成できます
その理由は何ですか?
c# - C#、Linq、動的クエリ:リポジトリの外部で動的クエリをフィルタリングするコード
リポジトリでこのようなことを行う場合:
そして、リポジトリの外部で条件と値を設定します。
動的クエリを使用して、リポジトリの外部で結果をどのように並べ替えることができますか?
どういうわけか、データがリポジトリから出るときにDynamicQueryの性質を失っています。はい、通常はSelect new Carclass {fieldName = m.fieldName、...}を実行するCarClassタイプを返す方法を理解していません。
c# - DynamicQuery.cs を拡張して .Single メソッドを実装するにはどうすればよいですか?
私が取り組んでいるプロジェクトのために、いくつかの動的クエリを作成する必要があります。プログラムが Count メソッドと First メソッドでかなりの時間を費やしていることがわかったので、.Single に変更し始めましたが、そのようなメソッドがないことがわかりました。
以下のコードは、最初に作成しようとしたものです (ほとんどは Where メソッドからコピーされたものです) が、機能していません。ヘルプ?
c# - このLinqSQLを(文字列を使用して)動的クエリとして作成するにはどうすればよいですか?
必要に応じて「特定の質問」にスキップしてください。いくつかの背景:
シナリオ: DDLが入力された「ドリルダウン」フィルター(クエリオブジェクト)を備えた一連の製品があります。プログレッシブDDLを選択するたびに、製品リストとDDLに残されるオプションがさらに制限されます。たとえば、ツールからハンマーを選択すると、製品サイズがハンマーサイズのみを表示するように制限されます。
現在の設定:クエリオブジェクトを作成してリポジトリに送信し、各オプションをSQLの「テーブル値関数」にフィードしました。null値は「すべての製品を取得」を表します。
これは良い努力だと思いますが、DDDは受け入れられません。SQLでの「プログラミング」を避けたいのですが、できればリポジトリですべてを実行します。このトピックに関するコメントをいただければ幸いです。
具体的な質問:
このクエリを動的クエリとして書き直すにはどうすればよいですか?101 Linq Examplesのようなものへのリンクは素晴らしいでしょうが、動的クエリスコープがあります。オプションのリストが必要な引用符""のフィールドと、そのオプションを持つ製品の数をこのメソッドに渡したいと思います。
各DDLオプションには、「選択(21)」があります。ここで、(21)は、その属性を持つ製品の数量です。オプションを選択すると、残りのすべてのDDLが残りのオプションとカウントで更新されます。
編集:追記:
私がこれまでに学んだことは、 LinqPadは素晴らしいですが、それでも答えを探しています。最終的には、このような完全にランダムな研究が普及すると思います。笑。
編集:
Jon Skeetは素晴らしいアイデアを持っていました:私が必要なものをキャストしIGrouping<string, Product>
ます。ジョンスキートに感謝します!オブジェクトをキャストしたら、セットを列挙して、結果を別のリストにフィードできます。
c# - Linq動的クエリの結果をカスタムクラスとしてキャストする方法は?
通常、私はこれを行います:
しかし、私は次のようなコードを持っています:
同一の結果を生成するためにどの構文を変更できますか?
gとitの両方が同じで、テーブル レコード全体を表していること、およびカウントを行うためだけにレコード全体を取得していることを知っています。私もそれを修正する必要があります。 編集: Marcelo Cantos は、Linq は不要なデータをプルしないほど賢いと指摘しました。ありがとう!
linq - シンプルな Linq 動的クエリの質問
Linq Dynamic Queryでは、Scott Guthrie が Linq クエリの例を示しています。
投影に注意してくださいnew( CompanyName as Name, Phone)
。このようなクラスがある場合:
各レコードで foreach を実行して別のデータ構造にダンプすることなく、CompanyContact データ型を使用して彼の結果を本質的に「キャスト」するにはどうすればよいでしょうか? 私の知る限り、使用可能な唯一の .Select は、文字列とパラメーター リストのみを受け取る動的クエリ バージョンです。
entity-framework - Dynamic Linq Library Guid の例外
Dynamic Linq ライブラリに問題があります。「ParserException was unhandled by user code ')」または「,'」というエラーが表示されます。辞書があり、この辞書に基づいてクエリを作成したいので、辞書をループして文字列ビルダーに追加します。 "PersonId = (辞書からの GUID)。問題は、動的ライブラリがクラッシュしないように、文字列 GUID を GUID に変換できないように見える何らかの理由で PersonId に追加したことだと思います。
文字列GUIDをGUIDに変換するためにこれを試しましたが、うまくいきません。
VS 2010 RTM と RIA サービス、および Entity Framework 4 を使用しています。
助けてください。これを行うためのより良い方法を知っている場合は、提案をお待ちしています。