問題タブ [compiled-query]

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.

0 投票する
1 に答える
1065 参照

c# - linq to sql コンパイル済みクエリのヘルプ

linq to sql クエリの 1 つにコンパイル済みクエリを使用しようとしています。このクエリには 5 ~ 6 個の結合が含まれています。コンパイルされたクエリを作成できましたが、直面している問題は、キーが入力として渡されたキーのコレクション内にあるかどうかをクエリで確認する必要があることです。ただし、コンパイルされたクエリでは、コレクションを渡すことはできません (コレクションにはさまざまな数のアイテムが含まれる可能性があるため、許可されません)。

例えば

関数への入力はキーのコレクションです。言う:List<Guid> InputKeys

上記のクエリは、リストを入力の 1 つとして取っているため、コンパイルされません。上記を行うための回避策またはより良い方法はありますか?

0 投票する
2 に答える
232 参照

c# - コンパイルされたクエリに「オフライン」コードを含める

ここで DataConvert.ToThema() を使用してテーブル オブジェクトをカスタム ビジネス オブジェクトに変換するように、コンパイル済みのクエリに関数を含めると、裏で何が起こりますか。

そしてそれをこのように呼びます

どうやら関数はSQLなどに変換されていないようですが(どうすればよいでしょうか)、VS2010でブレークポイントを設定しても保持されません。

問題なく動作しますが、方法や理由がわかりません。そこでは正確に何が起こりますか?

0 投票する
0 に答える
123 参照

linq - Linqクエリをプリコンパイルするタイミング(またはしない)を決定するためのベストプラクティスは何ですか?

私は現在、Silverlightアプリケーションをリファクタリングし、頻繁に使用されるクエリをユーティリティクラスに引き出しています。アプリケーションには多くのクエリがあり、いくつかの明らかなターゲットがありましたが、次のような非常に小さなクエリにたどり着くと、次のようになります。

コンパイルする価値はありますか?私が読んだすべて(Programming Entity Framework 2ed)とさまざまなオンラインソースでは、パフォーマンスが向上すると言われていますが、プリコンパイルしない場合の概要を示すものは見つかりませんでした(匿名型を返すことができないという事実を除いて、したがって、投影はありません)。

編集:コンパイルされたクエリに関する優れた背景記事:LINQクエリのプリコンパイル

アプリケーションでLinqクエリをプリコンパイルするタイミング(またはしない)を決定するためのベストプラクティスは何ですか?

0 投票する
1 に答える
1629 参照

c# - linq コンパイル済みクエリでのユニオンの使用

linq でユニオンを使用する最良の方法を見つけようとしています。

現在、同じ署名でクエリをコンパイルする必要があります。

そして、私のリポジトリクラスで私は何かをしています これをリンクします:

しかし、ユニオンはコンパイルされたクエリ内にある必要があると何かが教えてくれます。このようなもの: (このコードはコンパイルされません)

これを達成する方法はありますか?

0 投票する
2 に答える
1441 参照

entity-framework-4.1 - Entity Framework は CompiledQuery を使用しますが、ランタイム フィルター値を許可します

面倒な LINQ-to-SQL データ レイヤーをエンティティ フレームワークでリファクタリングしようとしています。モデルの背後にあるデータベース スキーマは大きく、典型的なクエリには 20 から 30 のインクルードが含まれる場合があります。EF は、このようなクエリに対して大量の SQL ステートメントを生成します。これまでで最大のものは 4,000 行ですが、それでもタイムリーに実行されるため、問題にはなりません。

問題は、EF がクエリを生成するのに最大 4 秒または 5 秒かかるということです。これを克服するために、CompileQuery を使用しました。問題は、既存の L2S データレイヤーに、ユーザー入力に応じてクエリに適用できるフィルターが多数あることです。これらのフィルターの単一の値は、実行時に設定する必要があります。

以下のコードは、最初の静的値がクエリにコンパイルされるため機能しませんが、私がやろうとしていることを示しています。

コンパイルされたクエリにフィルター式を含め、クエリの実行時にフィルター式に値を設定できる方法はありますか?

0 投票する
1 に答える
226 参照

linq - linqコンパイル済みクエリ、クラスフィールド

パブリック変数compiledQuerywriteFunc < MYEntities 、string、???>をどのように挿入でき ますか

このように試してみると、エラーが発生します。 パラメーターの少ないコンストラクターのみがサポートされます

0 投票する
3 に答える
1740 参照

entity-framework - Linq-to-Entities は、コンパイルされたクエリの整数のリストで ID を一致させます

次の形式の Linq-to-Entities コンパイル済みクエリを実装する方法を見つけようとしています。

CompiledQuery.Compile に渡すことができるのはスカラー パラメーターのみであるため、上記は失敗します。コンマで区切られた整数のリストを文字列として渡し、それを次の行に沿って L2E クエリで使用する賢い方法を見つけようとしています。

ただし、サポートされていない Split 関数のため、これは機能しません。

これをどのように実装できるかについての賢いアイデアはありますか?

0 投票する
1 に答える
97 参照

linq-to-sql - LoadWithなしで同じインスタンスを返すようにLinqToSqlクエリを書き直します

CompiledQueryのパフォーマンスを調査していますが、CompiledQueryはLoadWithにアレルギーがあります。

このコードは、左結合SQLクエリを発行することによってロードされた各CustomerインスタンスのOrdersプロパティにデータを入力します。LoadWithなしでクエリを書き直して同じ結果を得るにはどうすればよいですか(顧客はOrdersプロパティにデータを入力しています)?

0 投票する
1 に答える
1243 参照

vb.net - Linq to SQL Transaction Insert then Select本当に、本当に遅い

私は基本的に、あるテーブルのセットから別のセットにデータを移行するシステムの一部を開発しています。すべてが正常に機能しますが、部分的に完了したものに失敗するのではなく、トランザクションを採用することにしました。(つまり、何らかの例外が発生した場合、部分的なデータを移行するのではなく、ロールバックしたいと思います。)

データアクセス層でトランザクションを開始するサービス(Webではなく3層アーキテクチャの方法)があります。データコンテキストは、多くのメソッドを含むデータアクセスクラスで共有されます。これらのメソッドは、さまざまなLINQ-to-SQL手法を使用して、更新/挿入/削除します。LINQからSQLへのすべての「選択」はCompiledQueries内にあります。

「BeginTransaction」メソッドは、次のようなトランザクションを開始します。

基本的に、トランザクションを開始し、テーブルに挿入してから、挿入されたばかりの値を取得しようとするテストを、すべてトランザクション中に作成しました。これを行ったのは、insertメソッドが実際に挿入しようとしていることを表明したかったためです。次に、テスト中にロールバックしてから、新しく挿入された値が実際にテーブルにコミットされていないことを確認するためにテストします。テストは次のようになります。

だから、私の問題に...

テストが「faciRetrieval1」ステップに到達すると、次に進む前に約30〜60秒間そこにとどまります。なぜこれが起こっているのかわかりません。SSMS内のトランザクションで同じクエリを実行すると、すぐに発生します。誰かアイデアはありますか?データベースはSQLServer2008 SP1(R2?)です。