update ストアド プロシージャを実行して、テーブル内の 2 つの列だけを更新したいと考えています (このテーブルには他にも多くの列があります)。
現在、私は次のように実装しています-
foreach (Object obj in customCollection)
{
string[] updatedValues = GetUpdatedValues(obj.Property1);
using (SqlConnection sqlConnection = new SqlConnection(connString))
{
sqlConnection.Open();
SqlParameter[] sqlParams = new SqlParameter[2];
sqlParams[0] = new SqlParameter("@column1", SqlDbType.Float) { Value = updatedValues[0]};
sqlParams[1] = new SqlParameter("@column2", SqlDbType.Float) { Value = updatedValues[1] };
using (SqlCommand command = new SqlCommand("upUpdateProcedure", sqlConnection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddRange(sqlParams);
DatabaseHelper.ExecuteNonQuery(command);
}
}
}
したがって、上記のコードは、コレクション内の各オブジェクトに対してデータベースを呼び出しています。
「C# から SQL Server へのバッチ更新」のリンクをいくつか参照しましたが、これらのリンクのほとんどは、C# コード内でテーブルをロードし、テーブルの行を更新してから、DataAdapter.Update() を呼び出すことを提案しています。
ただし、このシナリオを別の方法で処理する他の既知の方法があるかどうか疑問に思っています。つまり、他の多くの列データも持っているため、テーブル全体をメモリにロードしたくないということです。
ガイドしてください。