0

式ツリーを使用して動的クエリを作成することを読みました。私の混乱は、単純な文字列でも同じことが達成できるということです。たとえば、テーブルから商品を取得するサンプル クエリを次に示します。

string productName = Console.Read();
var result = from products in context.Products
             where product.Name.Equals(productName)
             select product;

代わりに、プレーンな ADO.Net SQL プロバイダーを使用する場合でも、次のように動的クエリを作成できます。

string productName = Console.Read();
string query= "Select * from tableName where productname=" + productName;

では、式ツリーを使用する利点は何でしょうか? 同様に、式ツリーを使用して動的コードを作成する場合、単純にコード全体を文字列として格納し、実行時に評価するためのカスタム解析ロジックを作成できないでしょうか?

実際、この問題は式ツリーに固有のものではなく、一般的なツリーです。

4

1 に答える 1

2

この構文は、CLR オブジェクトとリレーショナル データベース スタック全体で機能します。これは、実行時にデータベースの正しいクエリ文字列に変換される、よく知られたクエリ構文です。得られる利点は、データベース技術を交換でき、理論的にはそのまま機能し続けることです。コメントに記載されているように、実行時ではなくコンパイル時にエラーについても通知されます。

于 2013-09-09T07:15:34.587 に答える