私は大量のデータを移動するためにSQLBulkCopyを使用しています。特定の行数が処理されるたびに通知イベントを実装しましたが、ジョブの完了時にOnSqlRowsCopiedイベントは発生しません。 SQLBulkCopy writetoserverが完了したときにコピーされる行の総数を取得するにはどうすればよいですか?
次のハック(反射を使用)はオプションです:
/// <summary>
/// Helper class to process the SqlBulkCopy class
/// </summary>
static class SqlBulkCopyHelper
{
static FieldInfo rowsCopiedField = null;
/// <summary>
/// Gets the rows copied from the specified SqlBulkCopy object
/// </summary>
/// <param name="bulkCopy">The bulk copy.</param>
/// <returns></returns>
public static int GetRowsCopied(SqlBulkCopy bulkCopy)
{
if (rowsCopiedField == null)
{
rowsCopiedField = typeof(SqlBulkCopy).GetField("_rowsCopied", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
}
return (int)rowsCopiedField.GetValue(bulkCopy);
}
}
そして、次のようにクラスを使用します。
int rowsCopied = SqlBulkCopyHelper.GetRowsCopied(bulkCopyObjectInYourCode);
お役に立てれば。