Ниже мой класс:
MsSql.cs:
public class MSSqlBLL
{
public static long RowsCopied { get; set; }
public long BulkCopy()
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "dbo.Table1";
bulkCopy.BatchSize = 100;
bulkCopy.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
bulkCopy.NotifyAfter = 100;
try
{
bulkCopy.WriteToServer(reader);
}
return RowsCopied;
}
}
private static void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
{
RowsCopied = RowsCopied + e.RowsCopied;
}
}
Я вызываю функцию BulkCopy из этого класса и хочу получить текущую обработанную запись в моей переменной затронутых записей.
Например: для каждой итерации цикла я хотел бы получить затронутые записи в моей переменной затронутых строк.
public class MySqlBLL
{
public void GetTotalRows()
{
int totalRecords = 500;
var table = "Table1";
for (int i = 0; i < totalRecords / 100; i++) //
{
query = "SELECT * FROM " + table + " LIMIT " + 0 + "," + 100;
var reader = Execute(conn, query);
long affectedRecords = msSql.BulkCopy();
reader.Close();
}
}
}
В приведенном выше методе я отправляю данные по частям в метод BulkCopy для выполнения массового копирования, но для каждой массовой копии я хотел бы получить количество записей, которые обрабатываются массовой копией , но проблема в том, что я получаю 0 в затронутых записях переменная.
Я хочу получить доступ к текущим строкам, обработанным массовой копией sql.