mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-15 23:42:51 +08:00
fix: ToDataTable
This commit is contained in:
parent
013f35e296
commit
3b0e62338d
@ -168,7 +168,7 @@ namespace FreeSql
|
|||||||
/// IgnoreColumns、InsertColumns
|
/// IgnoreColumns、InsertColumns
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
DataTable ToDataTable();
|
DataTable ToDataTable(string tableName);
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
|
@ -691,10 +691,10 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataTable ToDataTable()
|
public DataTable ToDataTable(string tableName = null)
|
||||||
{
|
{
|
||||||
var dt = new DataTable();
|
var dt = new DataTable();
|
||||||
dt.TableName = TableRuleInvoke();
|
dt.TableName = tableName ?? TableRuleInvoke();
|
||||||
var dtCols = new List<NativeTuple<ColumnInfo, Type, bool>>();
|
var dtCols = new List<NativeTuple<ColumnInfo, Type, bool>>();
|
||||||
foreach (var col in _table.ColumnsByPosition)
|
foreach (var col in _table.ColumnsByPosition)
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'net8.0' or '$(TargetFramework)' == 'net7.0' or '$(TargetFramework)' == 'net6.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'net8.0' or '$(TargetFramework)' == 'net7.0' or '$(TargetFramework)' == 'net6.0'">
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.4" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.7" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -243,13 +243,13 @@ public static partial class FreeSqlSqlServerGlobalExtensions
|
|||||||
/// <param name="copyOptions"></param>
|
/// <param name="copyOptions"></param>
|
||||||
/// <param name="batchSize"></param>
|
/// <param name="batchSize"></param>
|
||||||
/// <param name="bulkCopyTimeout"></param>
|
/// <param name="bulkCopyTimeout"></param>
|
||||||
public static void ExecuteSqlBulkCopy<T>(this IInsert<T> that, SqlBulkCopyOptions copyOptions = SqlBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null) where T : class
|
public static void ExecuteSqlBulkCopy<T>(this IInsert<T> 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<T>;
|
var insert = that as FreeSql.SqlServer.Curd.SqlServerInsert<T>;
|
||||||
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteSqlBulkCopy", "SqlServer"));
|
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteSqlBulkCopy", "SqlServer"));
|
||||||
|
|
||||||
if (insert._insertIdentity) copyOptions = copyOptions | SqlBulkCopyOptions.KeepIdentity;
|
if (insert._insertIdentity) copyOptions = copyOptions | SqlBulkCopyOptions.KeepIdentity;
|
||||||
var dt = that.ToDataTable();
|
var dt = that.ToDataTable(tableName);
|
||||||
if (dt.Rows.Count == 0) return;
|
if (dt.Rows.Count == 0) return;
|
||||||
|
|
||||||
Action<SqlBulkCopy> writeToServer = bulkCopy =>
|
Action<SqlBulkCopy> writeToServer = bulkCopy =>
|
||||||
@ -337,13 +337,13 @@ public static partial class FreeSqlSqlServerGlobalExtensions
|
|||||||
var state = ExecuteSqlBulkCopyState(update);
|
var state = ExecuteSqlBulkCopyState(update);
|
||||||
return UpdateProvider.ExecuteBulkUpdateAsync(update, state, insert => insert.ExecuteSqlBulkCopyAsync(copyOptions, batchSize, bulkCopyTimeout, cancellationToken));
|
return UpdateProvider.ExecuteBulkUpdateAsync(update, state, insert => insert.ExecuteSqlBulkCopyAsync(copyOptions, batchSize, bulkCopyTimeout, cancellationToken));
|
||||||
}
|
}
|
||||||
async public static Task ExecuteSqlBulkCopyAsync<T>(this IInsert<T> that, SqlBulkCopyOptions copyOptions = SqlBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null, CancellationToken cancellationToken = default) where T : class
|
async public static Task ExecuteSqlBulkCopyAsync<T>(this IInsert<T> 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<T>;
|
var insert = that as FreeSql.SqlServer.Curd.SqlServerInsert<T>;
|
||||||
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteSqlBulkCopyAsync", "SqlServer"));
|
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteSqlBulkCopyAsync", "SqlServer"));
|
||||||
|
|
||||||
if (insert._insertIdentity) copyOptions = copyOptions | SqlBulkCopyOptions.KeepIdentity;
|
if (insert._insertIdentity) copyOptions = copyOptions | SqlBulkCopyOptions.KeepIdentity;
|
||||||
var dt = that.ToDataTable();
|
var dt = that.ToDataTable(tableName);
|
||||||
if (dt.Rows.Count == 0) return;
|
if (dt.Rows.Count == 0) return;
|
||||||
|
|
||||||
Func<SqlBulkCopy, Task> writeToServerAsync = bulkCopy =>
|
Func<SqlBulkCopy, Task> writeToServerAsync = bulkCopy =>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user