Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
C# 带有notifyafter和事务的sqlbulkcopy_C#_Sql_C# 4.0_Sqlbulkcopy - Fatal编程技术网

C# 带有notifyafter和事务的sqlbulkcopy

C# 带有notifyafter和事务的sqlbulkcopy,c#,sql,c#-4.0,sqlbulkcopy,C#,Sql,C# 4.0,Sqlbulkcopy,我有下面的代码,我正试图用它来测试是否可能有事务和用于引发事件的notifyAfter属性(我已经尝试用我自己创建/引发的事件替换该事件,但只有在复制了所有行后才会引发该事件)。下面的链接表明这是不可能的 有人有过这方面的经验吗?谢谢 using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open();

我有下面的代码,我正试图用它来测试是否可能有事务和用于引发事件的notifyAfter属性(我已经尝试用我自己创建/引发的事件替换该事件,但只有在复制了所有行后才会引发该事件)。下面的链接表明这是不可能的

有人有过这方面的经验吗?谢谢

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                {
                        try
                        {
                            using (SqlBulkCopy copy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity |SqlBulkCopyOptions.UseInternalTransaction))

                            {
                                //Column mapping for the required columns.
                                for (int count = 0; count < numberOfColumns; count++)
                                {
                                    copy.ColumnMappings.Add(count, count);
                                }

                                //SQLBulkCopy parameters.
                                copy.DestinationTableName = dataTableName;
                                copy.BatchSize = batchSize;

                                copy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
                                copy.NotifyAfter = 5;

                                copy.WriteToServer(fullDataTable);
                            }
                        }
                        //Error(s) occured while trying to commit the transaction.
                        catch (InvalidOperationException transactionEx)
                        {
                            //uploadTransaction.Rollback();
                            status = "The current transaction has been rolled back due to an error. \n\r" + transactionEx.Message;
                            MessageBox.Show(status, "Error Message:");
                            alreadyCaught = true;
                            throw;
                        }
                }
使用(SqlConnection连接=新的SqlConnection(connectionString))
{
connection.Open();
{
尝试
{
使用(SqlBulkCopy copy=new SqlBulkCopy(connectionString,SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.UseInternalTransaction))
{
//所需列的列映射。
for(int count=0;count
我认为,由于事务的原因,处理仅在事务提交后发生,因此在此之后才会引发事件。

上述代码确实引发了事件。如果我将批量大小设置为10,NotifyAfter属性设置为5,则会引发事件。首次=DB中无任何内容。第二次=10行,依此类推继续,直到添加所有行。因此,我假设事务不工作,但我不确定如何测试。谢谢您的帮助。