Здесь используются те же DbConnection
и DbCommand
, но итерации по записям:
using (var connection = GetDbConnection())
using (var cmd = connection.CreateCommand())
{
cmd.Connection.ChangeDatabase(schema);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_insertRecord";
cmd.Parameters.Add("@stringVal", SqlDbType.NVarChar);
cmd.Parameters.Add("@numVal", SqlDbType.Int);
cmd.Parameters.Add("@dateVal", SqlDbType.DateTime);
int insertCount = 0;
foreach(var record in records)
{
cmd.Parameters["@stringVal"].Value = record["stringVal"];
cmd.Parameters["@numVal"].Value = record["numVal"];
cmd.Parameters["@dateVal"].Value = record["dateVal"];
insertCount += cmd.ExecuteNonQuery();
}
}
Я не уверен, к какому типу относятся ваши записи, но вы поняли идею.Если у вас есть возможность использовать SQLBulkCopy
, а не хранимые процедуры, это, вероятно, самый быстрый вариант.