Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dapper批量删除如何报告进度_Dapper_Dapper Plus - Fatal编程技术网

Dapper批量删除如何报告进度

Dapper批量删除如何报告进度,dapper,dapper-plus,Dapper,Dapper Plus,我正在使用Dapper Plus通过另一个表中的查询进行批量插入。我的问题是,一个报表的进度如何。正如您所看到的,我正在使用后台工作进程来运行代码,该代码运行良好,但是由于批量删除方法没有reportprogress事件,我将如何处理该事件 public StockDeativationForm() { InitializeComponent(); this._backgroundWorker.DoWork += new DoWorkEventHandler(th

我正在使用Dapper Plus通过另一个表中的查询进行批量插入。我的问题是,一个报表的进度如何。正如您所看到的,我正在使用后台工作进程来运行代码,该代码运行良好,但是由于批量删除方法没有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());
        }
     }
 }
PublicStockDeActivationForm()
{
初始化组件();
this._backgroundWorker.DoWork+=新的doworkenventhandler(this.BackgroundWorkerDoWork);
this.\u backgroundWorker.ProgressChanged+=新的ProgressChangedEventHandler(this.BackgroundWorkerProgressChanged);
this.\u backgroundWorker.RunWorkerCompleted+=新的RunWorkerCompletedEventHandler(this.BackgroundWorkerRunWorkerCompleted);
}
私有void BackgroundWorkerDoWork(对象发送方,DoWorkerVentargs e)
{
ProcessStockItems();
}
私有void BackgroundWorkerProgressChanged(对象发送方,ProgressChangedEventArgs e)
{
this.progressBar2.Value=e.ProgressPercentage;
}
私有void backgroundworkrrunworkercompleted(对象发送方,RunWorkerCompletedEventArgs e)
{
this.CompleteProcess();
}
私有void CompleteProcess()
{
MessageBox.Show(“已删除库存项目”,“库存项目删除”,MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
base.Close();
}
公开股减持表()
{
初始化组件();
this._backgroundWorker.DoWork+=新的doworkenventhandler(this.BackgroundWorkerDoWork);
this.\u backgroundWorker.ProgressChanged+=新的ProgressChangedEventHandler(this.BackgroundWorkerProgressChanged);
this.\u backgroundWorker.RunWorkerCompleted+=新的RunWorkerCompletedEventHandler(this.BackgroundWorkerRunWorkerCompleted);
}
私有void ProcessStockItems()
{
string conStr=ConfigurationManager.AppSettings[“DeleteStock”];
使用(var连接=新的SqlConnection(conStr))
{
DialogResult\u DialogResult=MessageBox.Show(null,“您确定要删除库存吗?这将删除所有库存项目”,“删除库存”,MessageBox按钮。YesNo);
如果(_dialogResult==dialogResult.Yes)
{
connection.BulkDelete(connection.Query(“从StockItem中选择ItemID”).ToList();
}
}
}
使用这种批量删除方法,一个报表是如何返回的

  connection.BulkDelete(connection.Query<StockItems>("Select ItemID FROM StockItem").ToList());
connection.BulkDelete(connection.Query(“从StockItem中选择ItemID”).ToList();

免责声明:我是

你说得对

也许使用日志事件可以工作

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());
StringBuilder日志=新建StringBuilder();
connection.UseBulkOptions(options=>options.Log=s=>{
如果(s.包含(“…xyz…”){
日志。追加行;
}   
}).BulkDelete(connection.Query(“从StockItem中选择ItemID”).ToList();

另一个解决方案是将此请求报告给我们的支持团队,并要求报告进度/通知事件。

很高兴见到您这是一个很好的组件,您的解决方案确实有效,谢谢。我调整了问题,以反映如果报告进度更好,dapper plus会更好。这是一种向用户提供进度反馈的方式但我不认为你会受到ado的阻碍。我必须同意,dapper和dapper plus是关于节约生命和时间的最佳扩展。