Dapper批量删除如何汇报进度
Dapper Bulk Delete how to report progress
我正在使用 Dapper Plus 使用来自另一个 table 的查询进行批量插入,我的问题是如何报告进度。如您所见,我正在使用后台工作进程 运行 我的代码工作正常,但是由于批量删除方法没有 reportprogress 事件,我将如何处理它。
public StockDeativationForm()
{
InitializeComponent();
this._backgroundWorker.DoWork += new DoWorkEventHandler(this.BackgroundWorkerDoWork);
this._backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(this.BackgroundWorkerProgressChanged);
this._backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.BackgroundWorkerRunWorkerCompleted);
}
private void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
{
ProcessStockItems();
}
private void BackgroundWorkerProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar2.Value = e.ProgressPercentage;
}
private void BackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.CompleteProcess();
}
private void CompleteProcess()
{
MessageBox.Show("Stock items Deleted", "Stock Item Delete", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
base.Close();
}
public StockDeativationForm()
{
InitializeComponent();
this._backgroundWorker.DoWork += new DoWorkEventHandler(this.BackgroundWorkerDoWork);
this._backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(this.BackgroundWorkerProgressChanged);
this._backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.BackgroundWorkerRunWorkerCompleted);
}
private void ProcessStockItems()
{
string conStr = ConfigurationManager.AppSettings["DeleteStock"];
using (var connection = new SqlConnection(conStr))
{
DialogResult _dialogResult = MessageBox.Show(null, "Are you sure you want to delete stock? This will delete all stock items", "Delete Stock", MessageBoxButtons.YesNo);
if (_dialogResult == DialogResult.Yes)
{
connection.BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
}
}
}
使用这种bulkdelete方法如何报告进度
connection.BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
免责声明:我是Dapper Plus
的所有者
你是对的,
也许使用日志事件可行?
StringBuilder log = new StringBuilder();
connection.UseBulkOptions(options => options.Log = s => {
if(s.Contains("...xyz...")) {
log.AppendLine(s);
}
}).BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
另一种解决方案是向我们的支持团队报告此请求并要求报告 Progress/Notify 事件。
我正在使用 Dapper Plus 使用来自另一个 table 的查询进行批量插入,我的问题是如何报告进度。如您所见,我正在使用后台工作进程 运行 我的代码工作正常,但是由于批量删除方法没有 reportprogress 事件,我将如何处理它。
public StockDeativationForm()
{
InitializeComponent();
this._backgroundWorker.DoWork += new DoWorkEventHandler(this.BackgroundWorkerDoWork);
this._backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(this.BackgroundWorkerProgressChanged);
this._backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.BackgroundWorkerRunWorkerCompleted);
}
private void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
{
ProcessStockItems();
}
private void BackgroundWorkerProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar2.Value = e.ProgressPercentage;
}
private void BackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.CompleteProcess();
}
private void CompleteProcess()
{
MessageBox.Show("Stock items Deleted", "Stock Item Delete", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
base.Close();
}
public StockDeativationForm()
{
InitializeComponent();
this._backgroundWorker.DoWork += new DoWorkEventHandler(this.BackgroundWorkerDoWork);
this._backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(this.BackgroundWorkerProgressChanged);
this._backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.BackgroundWorkerRunWorkerCompleted);
}
private void ProcessStockItems()
{
string conStr = ConfigurationManager.AppSettings["DeleteStock"];
using (var connection = new SqlConnection(conStr))
{
DialogResult _dialogResult = MessageBox.Show(null, "Are you sure you want to delete stock? This will delete all stock items", "Delete Stock", MessageBoxButtons.YesNo);
if (_dialogResult == DialogResult.Yes)
{
connection.BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
}
}
}
使用这种bulkdelete方法如何报告进度
connection.BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
免责声明:我是Dapper Plus
的所有者你是对的,
也许使用日志事件可行?
StringBuilder log = new StringBuilder();
connection.UseBulkOptions(options => options.Log = s => {
if(s.Contains("...xyz...")) {
log.AppendLine(s);
}
}).BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
另一种解决方案是向我们的支持团队报告此请求并要求报告 Progress/Notify 事件。