如何将更多参数传递给 Sqlbulkcopy notifyafter

本文关键字:Sqlbulkcopy notifyafter 参数传递 | 更新日期: 2023-09-27 18:31:28

我在执行sqlbulkcopy时调用了一个通知程序。到目前为止,我只打印写入数据库的行数。我想打印其他参数,如数据库名称、当前时间戳等。有人可以让我知道该怎么做。

如何将更多参数传递给 Sqlbulkcopy notifyafter

不能向事件处理程序提供参数,但可以使用捕获任意数量的本地信息的委托:

using (var bulkCopy = new SqlBulkCopy(...)) {
    string database = "myDatabase";
    bulkCopy.SqlRowsCopied += (o, e) => {
        Console.WriteLine(
            "Time: {0}, database: {1}, rows copied: {2}", 
            DateTime.Now, database, e.RowsCopied
        );
    };
    bulkCopy.WriteToServer(...);
}   

您可以通过将其包装在方法中并使用方法参数而不是局部变量来制作此泛型。您还可以包装SqlBulkCopy本身并使用自定义EventArgs创建自己的事件,但对于您要添加的信息,这似乎不值得。