From a2cc458e2ee504910a212906d0582cfc8311d3ed Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 12 Sep 2022 14:23:49 +0800 Subject: [PATCH] Add db.BulkCopy --- .../FastestProvider/FastestProvider.cs | 23 +++++++++++++++++-- Src/Asp.Net/SqlSugar/Interface/IFastest.cs | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs index 5a86e359e..439a80b8e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs @@ -85,10 +85,29 @@ namespace SqlSugar } public int BulkUpdate(List datas, string[] whereColumns, string[] updateColumns) { - whereColumns = whereColumns.Select(x => this.entityInfo.Columns.First(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x)).DbColumnName).ToArray(); - updateColumns = updateColumns.Select(x => this.entityInfo.Columns.First(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x)).DbColumnName).ToArray(); + whereColumns = whereColumns.Select(x => this.entityInfo.Columns.FirstOrDefault(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x))?.DbColumnName ?? x).ToArray(); + updateColumns = updateColumns.Select(x => this.entityInfo.Columns.FirstOrDefault(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x))?.DbColumnName ?? x).ToArray(); return BulkUpdateAsync(datas,whereColumns,updateColumns).ConfigureAwait(true).GetAwaiter().GetResult(); } + + public int BulkUpdate(List datas, string[] whereColumns) + { + return BulkUpdateAsync(datas, whereColumns).GetAwaiter().GetResult(); + } + + public async Task BulkUpdateAsync(List datas, string[] whereColumns) + { + whereColumns = whereColumns.Select(x => this.entityInfo.Columns.FirstOrDefault(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x))?.DbColumnName ?? x).ToArray(); + var updateColumns = this.entityInfo.Columns + .Where(it => !whereColumns.Any(z => z.EqualCase(it.DbColumnName))) + .Where(it => !it.IsIdentity) + .Where(it => !it.IsPrimarykey) + .Where(it => !it.IsOnlyIgnoreUpdate) + .Where(it => !it.IsIgnore) + .Select(it => it.DbColumnName) + .ToArray(); + return await BulkUpdateAsync(datas, whereColumns, updateColumns).ConfigureAwait(true); + } public async Task BulkUpdateAsync(List datas,string [] whereColumns,string [] updateColumns) { diff --git a/Src/Asp.Net/SqlSugar/Interface/IFastest.cs b/Src/Asp.Net/SqlSugar/Interface/IFastest.cs index 81ebe5d67..7ca34cf1a 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IFastest.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IFastest.cs @@ -23,6 +23,8 @@ namespace SqlSugar int BulkUpdate(List datas); Task BulkUpdateAsync(List datas); int BulkUpdate(List datas, string[] whereColumns, string[] updateColumns); + int BulkUpdate(List datas, string[] whereColumns); + Task BulkUpdateAsync(List datas, string[] whereColumns); Task BulkUpdateAsync(List datas, string[] whereColumns, string[] updateColumns); int BulkUpdate(string tableName,DataTable dataTable, string[] whereColumns, string[] updateColumns); int BulkUpdate(DataTable dataTable, string[] whereColumns, string[] updateColumns);