mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 修复 BulkCopy 与线程事务未传播的 bug;#962
This commit is contained in:
		@@ -48,15 +48,19 @@ public static partial class FreeSqlDamengGlobalExtensions
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
					            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
					                if (insert._orm.Ado?.TransactionCurrentThread != null)
 | 
				
			||||||
                {
 | 
					                    using (var bulkCopy = new DmBulkCopy(insert._orm.Ado.TransactionCurrentThread.Connection as DmConnection, copyOptions, insert._orm.Ado.TransactionCurrentThread as DmTransaction))
 | 
				
			||||||
                    using (var bulkCopy = copyOptions == DmBulkCopyOptions.Default ?
 | 
					 | 
				
			||||||
                        new DmBulkCopy(conn.Value as DmConnection) :
 | 
					 | 
				
			||||||
                        new DmBulkCopy(conn.Value as DmConnection, copyOptions, insert.InternalTransaction as DmTransaction))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        writeToServer(bulkCopy);
 | 
					                        writeToServer(bulkCopy);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        using (var bulkCopy = copyOptions == DmBulkCopyOptions.Default ?
 | 
				
			||||||
 | 
					                            new DmBulkCopy(conn.Value as DmConnection) :
 | 
				
			||||||
 | 
					                            new DmBulkCopy(conn.Value as DmConnection, copyOptions, insert.InternalTransaction as DmTransaction))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            writeToServer(bulkCopy);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (insert.InternalTransaction != null)
 | 
					            else if (insert.InternalTransaction != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,10 +50,11 @@ public static class FreeSqlMySqlConnectorGlobalExtensions
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
					            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
					                if (insert._orm.Ado?.TransactionCurrentThread != null)
 | 
				
			||||||
                {
 | 
					                    writeToServer(new MySqlBulkCopy(insert._orm.Ado.TransactionCurrentThread.Connection as MySqlConnection, insert._orm.Ado?.TransactionCurrentThread as MySqlTransaction));
 | 
				
			||||||
                    writeToServer(new MySqlBulkCopy(conn.Value as MySqlConnection));
 | 
					                else
 | 
				
			||||||
                }
 | 
					                    using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
				
			||||||
 | 
					                        writeToServer(new MySqlBulkCopy(conn.Value as MySqlConnection));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (insert.InternalTransaction != null)
 | 
					            else if (insert.InternalTransaction != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -109,10 +110,11 @@ public static class FreeSqlMySqlConnectorGlobalExtensions
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
					            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
					                if (insert._orm.Ado?.TransactionCurrentThread != null)
 | 
				
			||||||
                {
 | 
					                    await writeToServer(new MySqlBulkCopy(insert._orm.Ado.TransactionCurrentThread.Connection as MySqlConnection, insert._orm.Ado?.TransactionCurrentThread as MySqlTransaction));
 | 
				
			||||||
                    await writeToServer(new MySqlBulkCopy(conn.Value as MySqlConnection));
 | 
					                else
 | 
				
			||||||
                }
 | 
					                    using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
				
			||||||
 | 
					                        await writeToServer(new MySqlBulkCopy(conn.Value as MySqlConnection));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (insert.InternalTransaction != null)
 | 
					            else if (insert.InternalTransaction != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,15 +48,19 @@ public static partial class FreeSqlOracleGlobalExtensions
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
					            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
					                if (insert._orm.Ado?.TransactionCurrentThread != null)
 | 
				
			||||||
                {
 | 
					                    using (var bulkCopy = new OracleBulkCopy(insert._orm.Ado.TransactionCurrentThread.Connection as OracleConnection, copyOptions))
 | 
				
			||||||
                    using (var bulkCopy = copyOptions == OracleBulkCopyOptions.Default ?
 | 
					 | 
				
			||||||
                        new OracleBulkCopy(conn.Value as OracleConnection) :
 | 
					 | 
				
			||||||
                        new OracleBulkCopy(conn.Value as OracleConnection, copyOptions))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        writeToServer(bulkCopy);
 | 
					                        writeToServer(bulkCopy);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        using (var bulkCopy = copyOptions == OracleBulkCopyOptions.Default ?
 | 
				
			||||||
 | 
					                            new OracleBulkCopy(conn.Value as OracleConnection) :
 | 
				
			||||||
 | 
					                            new OracleBulkCopy(conn.Value as OracleConnection, copyOptions))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            writeToServer(bulkCopy);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (insert.InternalTransaction != null)
 | 
					            else if (insert.InternalTransaction != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,15 +92,19 @@ public static partial class FreeSqlSqlServerGlobalExtensions
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
					            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
					                if (insert._orm.Ado?.TransactionCurrentThread != null)
 | 
				
			||||||
                {
 | 
					                    using (var bulkCopy = new SqlBulkCopy(insert._orm.Ado.TransactionCurrentThread.Connection as SqlConnection, copyOptions, insert._orm.Ado.TransactionCurrentThread as SqlTransaction))
 | 
				
			||||||
                    using (var bulkCopy = copyOptions == SqlBulkCopyOptions.Default ?
 | 
					 | 
				
			||||||
                        new SqlBulkCopy(conn.Value as SqlConnection) :
 | 
					 | 
				
			||||||
                        new SqlBulkCopy(conn.Value as SqlConnection, copyOptions, null))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        writeToServer(bulkCopy);
 | 
					                        writeToServer(bulkCopy);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    using (var conn = insert.InternalOrm.Ado.MasterPool.Get())
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        using (var bulkCopy = copyOptions == SqlBulkCopyOptions.Default ?
 | 
				
			||||||
 | 
					                            new SqlBulkCopy(conn.Value as SqlConnection) :
 | 
				
			||||||
 | 
					                            new SqlBulkCopy(conn.Value as SqlConnection, copyOptions, null))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            writeToServer(bulkCopy);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (insert.InternalTransaction != null)
 | 
					            else if (insert.InternalTransaction != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -167,15 +171,19 @@ public static partial class FreeSqlSqlServerGlobalExtensions
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
					            if (insert.InternalConnection == null && insert.InternalTransaction == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var conn = await insert.InternalOrm.Ado.MasterPool.GetAsync())
 | 
					                if (insert._orm.Ado?.TransactionCurrentThread != null)
 | 
				
			||||||
                {
 | 
					                    using (var bulkCopy = new SqlBulkCopy(insert._orm.Ado.TransactionCurrentThread.Connection as SqlConnection, copyOptions, insert._orm.Ado.TransactionCurrentThread as SqlTransaction))
 | 
				
			||||||
                    using (var bulkCopy = copyOptions == SqlBulkCopyOptions.Default ?
 | 
					 | 
				
			||||||
                        new SqlBulkCopy(conn.Value as SqlConnection) :
 | 
					 | 
				
			||||||
                        new SqlBulkCopy(conn.Value as SqlConnection, copyOptions, null))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        await writeToServerAsync(bulkCopy);
 | 
					                        await writeToServerAsync(bulkCopy);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    using (var conn = await insert.InternalOrm.Ado.MasterPool.GetAsync())
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        using (var bulkCopy = copyOptions == SqlBulkCopyOptions.Default ?
 | 
				
			||||||
 | 
					                            new SqlBulkCopy(conn.Value as SqlConnection) :
 | 
				
			||||||
 | 
					                            new SqlBulkCopy(conn.Value as SqlConnection, copyOptions, null))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            await writeToServerAsync(bulkCopy);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (insert.InternalTransaction != null)
 | 
					            else if (insert.InternalTransaction != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user