public override async Task <int> BulkCopyAsync(
            DbConnection connection,
            DataTable dataTable,
            string destinationTableName = null,
            int?bulkCopyTimeout         = null,
            int?batchSize = null)
        {
            if (!(connection is OracleConnection conn))
            {
                return(0);
            }

            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }


            using (var bulkCopy = new OracleBulkCopy(conn))
            {
                bulkCopy.BatchSize            = dataTable.Rows.Count;
                bulkCopy.DestinationTableName = destinationTableName ?? dataTable.TableName;
                bulkCopy.BulkCopyTimeout      = conn.ConnectionTimeout;
                await bulkCopy.WriteToServerAsync(dataTable);

                return(dataTable.Rows.Count);
            }
        }