2016-03-31 21 views

答えて

8

dapperのEXECUTEとQUERYコマンドを使用して、本当に混乱しています。これは、あなたが(ドキュメントごとなど)Dapperのによって公開されたメソッドのシグネチャを見ている場合は特に、全く混乱するべきではありません。

public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true) 

クエリ方法は特にanonymous parameterを使用して行うならば、あなたはどんなreturn valueOutput parameterを期待されていない、それを実行するためのオプションがあり、IEnumerable of a type Tを返すことができ、内部でselect文を実行するためのものです、それだけでinput parameterを取り、提供します結果は、Type Tのプロパティに一致するスキーマを持っています。ケースreturn value又はOutput parameterに必要とされる、方法を実行DynamicParameters

public static int Execute(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null) 

を使用してバインドする必要があることをその目的は、データベース内のデータに変更を加えることであるInsert, Update and DeleteようなDMLステートメントを、実行することを意味します。戻り値の型はintegerであり、更新された行数の値を含める必要があります。SQL ServerでSet RowCount Onが設定されている場合、この呼び出しはDML呼び出しの場合のみ結果セットを返すのに役立ちません。

複数の結果セットが必要な場合は、QueryMultipleがあります。 GridReaderを返し、MARS(Multiple active result set)の概念を使用して複数のSelect文の結果を返すために使用できます。

実際にあなたの目的はそれらのいずれかを行うだろう、ちょうど手順を実行することですが、何より重要なのはセットを発生するものであるが受け取ることを楽しみにしている場合、それらはすべて(結果

+1

を提供するために、別のリターンを持って頭をうなずきます「非常に義務付けられた」種類の方法で) –

+0

ありがとう@Marc Gravell –

関連する問題