問題タブ [linq.compiledquery]
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 - コンパイルされたクエリと「パラメータをシーケンスにすることはできません」
コンパイルされたクエリは、DataContextと同じクエリ変換を実行すると思いました。それでも、.Containsメソッド呼び出しでクエリを使用しようとすると、実行時エラーが発生します。どこが間違っているのですか?
asp.net - コンパイルされたクエリはキャッシュされますか?
私のアプリケーションの多くは、コンパイルされたクエリを使用してデータを取得します。これらのクエリでは、現在のユーザーを参照することがよくあります。ユーザーBが別のユーザーAの後にログインすると、ユーザーBにはユーザーAの情報が表示されることに注意してください。
私はアプリケーション全体でこのようなクエリを持っています
User.Current
は、ログインしているユーザーに応じて変化する静的プロパティです。
ユーザーAで初めてログインすると、上記のコンパイル済みクエリはユーザーAのレコードを返します。したがって、User.CurrentもユーザーAへの適切な参照を返します。ただし、ユーザーBとしてログインすると、User.CurrentがユーザーBへの参照を返しているにもかかわらず、上記のコンパイル済みクエリはユーザーAのレコードを返します。
Profiler for SQL Serverを実行しましたが、コンパイルされたクエリが実行されると、生成されたTSQLがユーザーAのIDを両方とも参照していることに気付きました。
だから私の質問はこれです:
コンパイルされたクエリはどういうわけかキャッシュしますか?
もしそうなら、寿命は何ですか、そして私はそれを制御できますか?
コンパイルされたクエリで「現在のユーザー」を参照することは、ASP.netアプリケーションの悪い設計ですか?
皆さんありがとう!
linq - subsonic で linq クエリをコンパイルする必要がありますか?
サブソニック エンティティへの linq クエリをコンパイルする必要があるかどうかを知りたいですか?
たとえば、次の linq クエリをコンパイルする必要がありますか?
linq-to-sql - Linq-to-sql コンパイル済みクエリは、送信された DataContext に属さないオブジェクトを返しますか?
コンパイルされたクエリ:
コンパイルされたクエリが別のデータ コンテキストから結果を返しているようです
他の (複雑な) 単体テストを実行すると、期待どおりの結果が得られます: 新しいものではないエンティティをアタッチまたは追加しようとしました。おそらく、別の DataContext から読み込まれています。
もう 1 つの重要な情報は、このテストが TransactionScope の下にあることです (ただし、トランザクションがなくても問題が発生しています)。
XMLを使用してDBにマップされたPOCOを使用しています。
更新: 次のリンクで同様の問題が説明されているようです (このバグは解決されていますか?): http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/9bcffc2d-794e-4c4a-9e3e-cdc89dad0e38
entity-framework - コンパイルされたクエリのパラメーターとしてのフィルター リスト
フィルター処理されたリストに含まれる「GroupID」を持たない「グループ」のリストを返したい次のコンパイル済みクエリがあります。
ただし、次の実行時エラーが発生します。
タイプ 'System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c261364e126]]' の指定されたパラメーター 'categories' は無効です。スカラー パラメーター (Int32、Decimal、Guid など) のみがサポートされています。
何か案は?
c# - デリゲートを使用して CompiledQuery を名前で取得する方法
名前を指定して CompiledQuery を見つけて実行しようとしています。コンパイルされたクエリに名前でアクセスする方法と、デリゲートを呼び出す方法を教えてください。
これが私が得ることができる限りです-「ターゲットメソッドへのバインディングエラー」というエラーが表示されます
// 他のコンパイル済みクエリは省略されていますが、結果は共通インターフェイス IProjectObject を実装する IQueryable オブジェクトです
linq-to-sql - 結合およびコンパイルされたクエリでの LINQ-to-SQL "メンバー アクセスは型で正当ではありません" 例外
結合したい複数のクエリがあり、全体をコンパイルします。コンパイルされていないクエリは正常に実行されますが、「InvalidOperationException: 'UserQuery+Foo' のメンバー アクセス 'Int32 Id' は、タイプ 'System.Linq.IQueryable`1[UserQuery+Foo] では正当ではありません。」同じクエリをコンパイルして実行すると、例外がスローされます。
これを修正するにはどうすればよいですか?
編集
ユニオンとグループ化は無関係のようです。これらの要素をクエリから削除しても、コンパイル時に例外が発生します。
への呼び出しをGetA(dc)
withに置き換えdc.GetTable<Bar>()
て where 句を追加すると、問題が修正されます。
では、このように個別のクエリを一緒に接続することは、コンパイルされたクエリでは不可能ですか?
編集#2
ジェームズの答えは的を射ていた。クエリをさらに単純化すると、根本的な問題が明らかになります。
このクエリはスローしますNotSupportedException: Method 'System.Linq.IQueryable``1[UserQuery+Foo] GetA(System.Data.Linq.DataContext)' has no supported translation to SQL.
GetA への呼び出しを別の変数割り当てに引き出し、その変数をクエリで使用すると、InvalidOperationException: Sequence contains more than one element
例外がスローされます。
performance - コンパイルされたクエリに追加の句を適用すると、再コンパイルが発生しますか?
CompiledQuery.Compileを介してコンパイルされたエンティティクエリがあり、別の.Where()句または.OrderBy()句を追加した場合、これらの追加句は完全な再コンパイル、部分的な再コンパイル、または再コンパイルなしを強制しますか?
linq-to-sql - .NET 4 での DataContext コンパイル済みクエリの問題
私のプロジェクト (UI レイヤーは asp.mvc) は、.NET 3.5 を使用して開発されました。.NET 4.0 にアップグレードした後、コンパイルされたクエリで問題が発生しました。
クエリを実行するたびに、コンテキストを渡しています
2 番目の要求でエラーが発生します。