問題タブ [custom-linq-providers]
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.
c# - MemberExpressions ターゲットのスコープの決定
カスタム Linq プロバイダーを作成した経験のある人はいますか?
私がやろうとしているのは、ビジネス オブジェクトのプロパティである MemberExpression を SQL に含める必要があるか、それとも定数として扱う必要があるかを判断することです。これは、たまたまビジネス オブジェクトであるローカル変数からのものであるためです。
たとえば、これがある場合:
現時点では、クエリ トランスレータは を実行しようとしますがSELECT * FROM orders o where o.CustomerID = c.CustomerID
、もちろん動作しません。
私がやりたいのは、上のMemberExpressionを調べて、c.CustomerID
それがローカル変数なのか、それともLinq式の一部として使用されているものなのかを調べることです.
SQL Serverがバインドできないフィールドを探し、代わりにそれらの値を注入するクエリの2回目のパスとしてそれを行うことができましたが、可能であればすべてを同時に実行したいと思います. 式のType
プロパティ、 andを調べてみましたIsAutoClass
が、 Auto という単語が含まれていたため、推測に過ぎませんでした。そして、それはうまくいきませんでした:)
.net - LINQ プロバイダーがサポートするメソッドを見つける
Contains
このメソッドはEFに存在しないため、Entity Frameworkクエリで使用しようとしましたが、失敗しました。ただし、イライラするコードがコンパイルされます。
LINQプロバイダーが与えられた場合、LINQプロバイダーがサポートするメソッドを見つける方法を知っている人はいますか?
c# - Where()をSQLに変換する
クライアントプロパティをSQLにマッピングする方法について、DamienGの記事(http://damieng.com/blog/2009/06/24/client-side-properties-and-any-remote-linq-provider )を見ました。私はこの記事を実行しました、そして私はそれに大きな可能性を見ました。クライアントのプロパティをSQLに確実にマッピングすることは素晴らしいアイデアです。
しかし、文字列を連結するよりも少し複雑なものにこれを使用したかったのです。Atmは、Businessオブジェクトに多言語を導入しようとしています。既存のすべてのlinq2sqlクエリをそのままにして、多言語プロパティのコードを変更するだけで、CurrentUICultureで指定されたプロパティが実際に返されるようにしたいと思います。
最初のアイデアは、これらのフィールドをXMLに変更してから、Object.Property.Elements()。Where(...)を試すことでしたが、SQLに変換できなかったため、Elements()でスタックしました。XMLフィールドは実際には文字列と見なされ、アプリサーバー上でのみXElementsになることをどこかで読みました。したがって、この方法では、フィルタリングはDBではなくアプリサーバー上で行われます。フェアポイント、それはこのようには機能しません。別のことを試してみましょう...2番目のアイデアは、PolyGlotsテーブル(http://weblogic.sys-con.com/node/102698?page=0,1から取得した名前)、PolyGlotTranslationsテーブル、およびカルチャを作成することでした。表。PolyGlotsは各国際化されたプロパティから参照されます。このように私は例えば言いたかった:
残念ながら、ここで、Where()関数をsqlに変換できないというエラーが発生します。これは、実行されると確信していたため、少し残念です。IEntitySetは基本的にIEnumerableであり、IQueryableではないので、失敗していると思います。
この目標を達成するためにcompiledExpressionsクラスを使用する別の方法はありますか?助けていただければ幸いです。
iqueryable - System.Linq.Expressions.ExpressionVisitor は、保護レベルが原因でアクセスできません
IQueryable LINQ Provider の作成の指示に従おうとしていますが、指示どおりに継承するクラスを実装するExpressionVisitor
と、保護レベルのために ExpressionVisitor にアクセスできないと言われます。信じられないほど基本的な何かが欠けていますか?
linq - LINQ プロバイダーから RESTful サービスへ
カスタム LINQ プロバイダーを RESTful サービスに記述しています。サービス内の一部の呼び出しは、レコードの総数、ページサイズ、およびリターンのページを含む概要ヘッダーを返します。このデータを返すためのクリーンな方法が必要です。このクエリを考えると:
上記の「foo」変数はIQueryable<MyQueryableThingie>
. コレクションの各メンバーに添付せずに、これらの要約データを返す最良の方法は何ですか? プロパティがクエリごとに更新されるようなコンテキストのプロパティにすることを検討しましたが、それが最適なパターンかどうかはわかりません。
linq - IQueryable Over WCF サービスを公開する
IQueryable とクエリの遅延読み込み/遅延実行について学んでいます。
この機能を WCF 経由で公開することは可能ですか? クライアントで追加のクエリを実行できる IQueryable を返す LINQ-to-SQL サービスを公開し、最後に .ToList() を使用して実行したいと考えています。このコンテキストで OData 形式はまったく適用できますか?
可能であれば、この手法の用語と、従うことができる優れたチュートリアルは何ですか? ありがとうございました。
vb.net - 動的LINQクエリの構築
タウンの場合、ユーザーがリストから選択できるリストボックスがあります。リストで選択したアイテムに基づいてLINQクエリを作成できるようにしたいです。
LinqKitは必要なことを実行できるように見えるので調査しましたが、何時間も努力した後は前進できません。VBには、意味のある、または使用可能なものに変換されるものが見つかりません。
.net - カスタム Linq プロバイダーを作成するためのライブラリまたはフレームワーク
カスタム Linq プロバイダーを作成するためのライブラリまたはフレームワークは何ですか?
いかがですか?長所と短所?最高のものは何ですか?
c# - LINQ パススルー プロバイダー?
LINQ 式ツリーで統計データを収集する単純なクラスIQueryable
とクラスを実装しました。IQueryProvider
この部分は正常に動作します。次に、評価のために式ツリーを既定の LINQ-to-Objects プロバイダーに渡したいと思います。別の方法で実行する必要はないからです。言い換えれば、プロバイダーが副作用として統計を収集し、クエリを既定の LINQ 実装に渡すようにしたいと考えています。
ただし、デフォルトのプロバイダーへのハンドルを取得するのに苦労しています。IEnumerable
元のコレクションへの参照を単純に保存し、次のように (カスタムからIQueryable
)デフォルト プロバイダーを返すことができると考えました。
しかし、これは正しく機能しません。コードは最終的にStackOverflowException
. 私が考えていること (デバッグ モードでのシングル ステップから収集) は、LINQ ランタイムが上記のメソッドからプロバイダーを取得し、次に custom から式ツリーを取得IQueryable
し、最上位の式が私のカスタムIQueryable
。そのため、プロセスを最初からやり直して、適切なプロバイダーを見つけようとします。これは、スタック オーバーフローが発生するまで際限なく行われます。
IQueryable
現時点では、LINQ ランタイムが既定のプロバイダーを呼び出すように、カスタム ノードが削除された別の式ツリーを生成する別のビジターを考え出すことしか考えられません。Call
カスタムIQueryable
を再度呼び出すネストされた式がないことを確認するために、すべてのリーフにアクセスする必要があるため、これはかなりの量の作業です。より簡単なアプローチはありますか?
助けてくれてありがとう。
c# - LINQ プロバイダーが任意のコードを変換するにはどうすればよいですか?
LINQ プロバイダーは、実際の LINQ クエリを SQL クエリ (または何でも) に変換する「もの」であることを理解しています。これは、LINQ クエリの AST を走査し、適切な SQL クエリをレンダリングすることによって行われます。ここまでは順調ですね。
これは、次のような単純な C# コードで機能すると想像できます。
これは (ほとんど直接) SQL に変換できます。しかし、次のような任意の複雑な C# コードを提供するとどうなるでしょうか。
SQL にはこれに相当するものはありません。そのような場合、LINQ プロバイダーは何をしますか?