diff --git a/FreeSql/Interface/Curd/IInsert.cs b/FreeSql/Interface/Curd/IInsert.cs
index b5cd7a4a..675ca1a4 100644
--- a/FreeSql/Interface/Curd/IInsert.cs
+++ b/FreeSql/Interface/Curd/IInsert.cs
@@ -168,7 +168,7 @@ namespace FreeSql
/// IgnoreColumns、InsertColumns
///
///
- DataTable ToDataTable();
+ DataTable ToDataTable(string tableName);
#if net40
#else
diff --git a/FreeSql/Internal/CommonProvider/InsertProvider.cs b/FreeSql/Internal/CommonProvider/InsertProvider.cs
index 079df9af..05bab664 100644
--- a/FreeSql/Internal/CommonProvider/InsertProvider.cs
+++ b/FreeSql/Internal/CommonProvider/InsertProvider.cs
@@ -691,10 +691,10 @@ namespace FreeSql.Internal.CommonProvider
return sb.ToString();
}
- public DataTable ToDataTable()
+ public DataTable ToDataTable(string tableName = null)
{
var dt = new DataTable();
- dt.TableName = TableRuleInvoke();
+ dt.TableName = tableName ?? TableRuleInvoke();
var dtCols = new List>();
foreach (var col in _table.ColumnsByPosition)
{
diff --git a/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj b/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj
index 1c0807dc..54674dad 100644
--- a/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj
+++ b/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj
@@ -37,7 +37,7 @@
-
+
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs
index 27bd0bb6..81f1521f 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs
@@ -243,13 +243,13 @@ public static partial class FreeSqlSqlServerGlobalExtensions
///
///
///
- public static void ExecuteSqlBulkCopy(this IInsert that, SqlBulkCopyOptions copyOptions = SqlBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null) where T : class
+ public static void ExecuteSqlBulkCopy(this IInsert that, SqlBulkCopyOptions copyOptions = SqlBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null, string tableName = null) where T : class
{
var insert = that as FreeSql.SqlServer.Curd.SqlServerInsert;
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteSqlBulkCopy", "SqlServer"));
if (insert._insertIdentity) copyOptions = copyOptions | SqlBulkCopyOptions.KeepIdentity;
- var dt = that.ToDataTable();
+ var dt = that.ToDataTable(tableName);
if (dt.Rows.Count == 0) return;
Action writeToServer = bulkCopy =>
@@ -337,13 +337,13 @@ public static partial class FreeSqlSqlServerGlobalExtensions
var state = ExecuteSqlBulkCopyState(update);
return UpdateProvider.ExecuteBulkUpdateAsync(update, state, insert => insert.ExecuteSqlBulkCopyAsync(copyOptions, batchSize, bulkCopyTimeout, cancellationToken));
}
- async public static Task ExecuteSqlBulkCopyAsync(this IInsert that, SqlBulkCopyOptions copyOptions = SqlBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null, CancellationToken cancellationToken = default) where T : class
+ async public static Task ExecuteSqlBulkCopyAsync(this IInsert that, SqlBulkCopyOptions copyOptions = SqlBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null, CancellationToken cancellationToken = default, string tableName = null) where T : class
{
var insert = that as FreeSql.SqlServer.Curd.SqlServerInsert;
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteSqlBulkCopyAsync", "SqlServer"));
if (insert._insertIdentity) copyOptions = copyOptions | SqlBulkCopyOptions.KeepIdentity;
- var dt = that.ToDataTable();
+ var dt = that.ToDataTable(tableName);
if (dt.Rows.Count == 0) return;
Func writeToServerAsync = bulkCopy =>