問題タブ [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.
linq-to-sql - Linq to SQL では、コンパイルされたクエリが再コンパイルされないようにするにはどうすればよいですか?
コンパイル済みクエリを使用しています。予想どおり、最初のコンパイルには余分な時間がかかりますが、約 30 分間呼び出されなかった後に再コンパイルされることにも気付きました。
クエリを再コンパイルするタイミングを制御したり、再コンパイルを完全に防止したりすることはできますか?
参考までに: 私が気付いたパフォーマンスの違いの例として、私のクエリの 1 つが、コンパイルされたときは 10 秒未満であるのに対し、コンパイルされていないときは 6 秒かかっていることです。そのため、クエリの再コンパイルを制御または防止できれば、大きな違いが生じるでしょう。
どんな助けでも大歓迎です。
asp.net - Entity Framework Large Query-コンパイルされたサブクエリに分割されますか?
情報を収集して最終的に自動車保険の見積もりに計算された保険料を与えるASP.NETWebフォームアプリケーションがあります。
ルートCarRiskオブジェクトにデータを入力する画面が約10個あります。これには、CarRisk.Proposer、CarRisk.AdditionalDrivers、CarRisk.CarRiskVehicleなどのプロパティがあります。
とにかく、見積もりの概要画面(前のページで入力したデータをまとめたもの)が表示されたときに問題が発生しました。各ドライバーはクレーム/有罪判決/医学的状態を持つことができ、これらのそれぞれはclaimType / convictionTypeなどと別の関係を持っているので、クエリは非常に大きくなります。
CompiledQueryを使用して、要約までのすべての見積もり画面を熱心にロードしようとしていますが、要約に到達すると、53個のインクルードがあるためCarRiskを熱心にロードしようとするとEFが失敗します。コンパイルされたクエリを使用しようとすると、実行はもちろんのこと、クエリもコンパイルされません。IISがハングする原因になっているようです。少ないインクルード(おそらく25)でこれを最後に行ったときに、クエリで使用されているテーブルが多すぎるというSQLサーバーエラーが発生したように感じます。コンパイルされたクエリの結果を1つのcarRiskに結合しようとしましたが、CarRisk.CarRiskVehicle = carRiskCarRiskVehicleCompiledQuery.CarRiskVehicleのように設定しようとするとエラーが発生しますが、「EntityCollectionはすでに初期化されています。
だから私は遅延読み込みに戻りましたが、それはかなり遅く、クライアントはパフォーマンスの低下に不満を持っています。LazyLoading中にChangeTrackingをオフにしようとしましたが、大幅な改善とは言えません。
私が何をすべきかについての提案/アイデアはありますか?
以下にインクルードを表示して、確認できるようにします
ent.CarRisks
.net - Linq2Sql「メンバーアクセスは型で合法ではありません」例外
コンパイルされたクエリを含む静的クラスがあり、サブクエリの一部を再利用したいと考えています。したがって、共通部分を静的プロパティに抽出し、複数のクエリで参照します。
これは問題なくコンパイルされますが、実行時に取得します
System.InvalidOperationException: 'UserAccount' のメンバー アクセス 'System.String IdentityName' は、タイプ 'System.Linq.IQueryable`1[UserAccount] では有効ではありません。
この場合も例外ではありません
なんで?回避策はありますか?
c# - LINQ: コンパイル済みクエリを使用するのはいつですか?
これについて専門家のアドバイスが欲しいです。以前にコンパイル済みクエリを使用したことがありますが、この特定のケースでは、それが適切かどうかわかりません。
これは、クエリが変化し、検索対象に依存する検索フォームです。
誰かが検索ボックスに入力した場合、クエリに別のWhere
ステートメントを追加してクエリを拡張したいと思います。
だから私の質問は、すべての結果を返し、結果の一致LocationID == 123
をチェックしていますか? searchString
それとも、実際にコンパイルされたクエリを拡張していますか?
それが前者の場合(私はそうであると思われます)、を破棄しCompiledQuery
て、クエリを拡張するメソッドを作成し、それをリストとして返す必要がありますか?
また、使用のベスト プラクティスCompiledQuery
とはどのような場合に使用すべきかについてのガイドラインはありますか?
注:Linq to SQLを使用してASP.NET Webサイトで上記を使用しています。それが違いを生むかどうかはわかりません。
ありがとう
entity-framework - レコード エンティティ フレームワークを削除する
私は例外を受け取っています:
DefiningQuery があり、現在の操作をサポートする要素が要素に存在しないため、EntitySet 'Session' を更新できません。
データベース テーブルから行を削除しようとしたとき。SaveChanges()
存在する行を呼び出すと、例外が表示されます。以下は私のコードです:
asp.net - Linq コンパイル済みクエリとパフォーマンスの問題
linq コンパイル済みクエリのパフォーマンスの問題が発生しています。
ここにコード全体を添付しました。応答に約 20 秒かかりすぎているため、何が問題なのかを確認してください。
主に foreach ループに 17 秒以上かかります。
このクエリをコンパイルする方法を教えてください。
前もって感謝します。
c# - Linq2SQLの単純なクエリをCompiledQueriesに変換して、アプリのパフォーマンスを向上させる
Silverlight for Windows Phone(SDK 7.1)アプリを作成しており、CompactSQLDBのデータをSilverlightToolkit forWindowsPhoneのLongListSelector
コントロールに表示しています。
リストの長さが約150アイテムになると、アプリはデータの読み込みを実際に遅くし、ページへの移動やページからの移動、アニメーションの表示に失敗します(バックグラウンドスレッドを使用すると、アニメーション用にUIスレッドを解放するのに役立ちます)。
現在、常に使用している3つのクエリがあります。LongListSelectorからのデータが更新されるか、ページがナビゲートされるたびです。私はに変換MoviesByTitle
しましたがCompiledQuery
、それは非常に役立ちました。そのため、他の2つのクエリ(groupedMovies
およびLongListSelector.ItemSource
タイプList<Group<Movie>>
)についても同じことを実行しようとしていましたが、正しい構文を理解できないようです。
これらのクエリをより効率的にする方法についての提案はありCompiledQuery
ますか?
MoviesByTitle
と呼ばれる別のクラスにありますQueries
MainPageのフィールド
MainPageのLoadDB()メソッド内-このメソッドは、DBが更新されるときに、OnNavigatedToおよび他のいくつかの場所で呼び出されます。
GroupHeader
DBのプロパティMovies
とエンティティです
Group
クラスは以下の通りです
c# - LINQ toSQLCompiledQueryの速度低下
CompiledQuery
LINQ to SQL(WP7、C#、およびSQLCE 3.5データベース)でを使用しようとしていますが、最初の使用後、クエリの速度がコンパイルされていない速度に低下します。私はこれに不慣れで、明らかな何かを見逃したと確信していますが、何がわからないのです。
コンテキストとして、私はかなり大きな用語のデータベース(約100,000レコード)を持っており、このデータベースを検索したいと思います。さまざまなアプローチと最適化を試した後でも、クエリは非常に遅いため、を使用することを検討しCompileQuery
ました。
以下は、私がLINQPadで一緒に投げたコードです。
もちろん、これは過度に単純化されていますが、あなたはその考えを理解しています。現在、生成される結果は次のとおりです。
誰もが言うことは、最初のクエリは遅くなりますが、後続のクエリは速くなるということです。ただし、私の場合は逆です。最初のクエリはコンパイルされているように見えますが、後者のクエリはコンパイルされていません。
それは明らかなことだと思いますが、何が欠けているのかわかりません。ポインタはありますか?
よろしくお願いします!
c# - コンパイルされたクエリに含める
WCF サービスのいくつかのホットスポットを特定して改善しようとしています。クエリの 1 つは、非常に多くの Include ステートメントを使用しています。SQL サーバーのパフォーマンスは非常に優れていますが、EF のパフォーマンスは非常に悪いです。
この怪物をいくつかの小さなクエリに分割することは、すでに多くの助けになっています。一部のクエリを CompiledQueries に変換すると、全体的な実行時間も驚くほど短縮されました。
悲しいことに、EF は CompiledQuery で Include ステートメントを適切に処理する可能性がないようで、次のような例外がスローされます。
コンパイルされたクエリは次のようになります。
オリジナルは次のように見えますが(そして動作します):
任意のヒント?
c# - Include()をlinq結合に書き換える
コンパイルされたクエリでInclude()を使用することは(現時点では)不可能なので、私はそれらを結合に書き直そうとしています。しかし、私が望むようにはうまくいかないようです。
私がこの関係を持っているとしましょう:
今、私は次のように説明をフェッチするために使用しました:
私はこれを次のように書き直してみました:
しかし、OrderStateは私の結果セットではまだnullです。これを修正するにはどうすればよいですか(コンパイルされたクエリに受け入れられる方法で)?