Execute
は、影響を受ける行の数を返します。したがって、ある行を更新すると、成功した場合は1
が戻り値になり、それ以外の場合は0(またはエラー)となります。
bool allSucceeded = true;
foreach (var obj in mainObject)
{
int updated = db.Execute("update Table set Column = @0 where [email protected] and C2 [email protected]", Column1, obj.data1, obj.data2);
bool succeed = updated != 0;
if(!succeed)
allSucceeded = false;
}
したがってExecute
は、成功の場合は1、失敗の場合は0を返しません。影響を受けた行の数を返します。たとえば、次のクエリを実行すると:DELETE FROM Table
このテーブルのすべての行が削除され、戻り値はこのテーブルの行数になります。したがって、0が失敗または1が成功すれば、ロジックとクエリに依存します。
ところで、この動作は、SqlCommand.ExecuteNonQuery
のようなADO.NETメソッドと一貫しています。
戻り値を保存しないのはなぜですか? –