/ / LinqのExecuteQueryとExecuteCommandからのより良いもの-linq

LinqのExecuteQueryとExecuteCommandの方が良い

私はLinqで働いています 今、私はSQLクエリを実行するために次のものよりも優れていることを知りたいです。

1)ExecuteQuery

2)ExecuteCommand

回答:

回答№1は1

ExecuteQueryとExecuteCommandの両方のメソッドはLINQ DataContextのメソッド。これらは、LINQ to SQLが特定のシナリオを適切に提供しない場合のパススルーメカニズムです。 LINQを使用する主な理由であるLINQの表現力を失うため、LinqToSqlでこれらのメソッドを使用することはまれです。また、クエリで厳密に型指定された変数を持つことの価値を失うことにもなります。これは、LINQを使用するもう1つの主な利点です。

貧しいプログラミング慣行と見なされます文字列要素から構築されたSQLコマンドは、SQLインジェクションと呼ばれるデータベースハッキングへの道であるため、SQLクエリ文字列を構築し、データベースに直接渡します。そのため、一般的には、絶対に必要な場合を除いて、細心の注意を払ってExecuteQueryとExecuteCommandの使用を避けることをお勧めします。

すべてを言ったので、ここに説明がありますそれらの方法がいつ使用されるかについて。 ExecuteQueryはSelectステートメントの実行に使用され、ExecuteCommandはInsert、Update、Deleteの実行、またはストアドプロシージャの呼び出しに使用されます。

ただし、SQL呼び出しを行うにはLINQクエリ構文またはLINQラムダ構文を使用し、ExecuteQueryまたはExecuteCommandは使用しないでください。


回答№2の場合は0

ExecuteCommandの戻り値の型がintであることがわかります。これは、テーブル/ DROP DATABASE / IDのリセットを切り捨てたり、現在の値を確認したり、ANSI nullを設定したりする場合(結果が返される場合)に使用できます。 ExecuteQueryの戻り値の型はIEnumerableであるため、指定したSQLステートメントがレコードセットを返す場合に使用されます。

他に洞察がある場合は、コメントを追加してください。