From fd798c965b053cb81fb7c5209dc2a56f361698b3 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 1 Sep 2023 09:39:31 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20IInsertOrUpdate=20Bulk?= =?UTF-8?q?Copy=20=E4=B8=B4=E6=97=B6=E8=A1=A8=E5=90=8D=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B#1603?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 36 ++++++++++--------- .../SqlServerExtensions.cs | 4 +-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 108d57ec..dc26208f 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -561,7 +561,7 @@ namespace base_entity .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") - //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") + .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") //.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2") ////.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2") @@ -600,6 +600,24 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + + var bulkUsers = new[] { + new IdentityUser1 { Nickname = "nickname11", Username = "username11" }, + new IdentityUser1 { Nickname = "nickname12", Username = "username12" }, + new IdentityUser1 { Nickname = "nickname13", Username = "username13" }, + + new IdentityUser1 { Nickname = "nickname21", Username = "username21" }, + new IdentityUser1 { Nickname = "nickname22", Username = "username22" }, + new IdentityUser1 { Nickname = "nickname23", Username = "username23" } + }; + fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows(); + fsql.Insert(bulkUsers).IgnoreInsertValueSql(a => a.Nickname).NoneParameter().ExecuteAffrows(); + bulkUsers = fsql.Select().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray(); + bulkUsers[0].Nickname += "_bulkupdate"; + bulkUsers[1].Nickname += "_bulkupdate"; + bulkUsers[2].Nickname += "_bulkupdate"; + fsql.Update().SetSource(bulkUsers).ExecuteSqlBulkCopy(); + FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(TestIdAndIdentity), new String_TestIdAndIdentity()); fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 101, IdentityId = 10101 } }).ExecuteAffrows(); fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 102, IdentityId = 10202 } }).ExecuteAffrows(); @@ -982,22 +1000,6 @@ var sql11111 = fsql.Select() }) .ToSql(); - var bulkUsers = new[] { - new IdentityUser1 { Nickname = "nickname11", Username = "username11" }, - new IdentityUser1 { Nickname = "nickname12", Username = "username12" }, - new IdentityUser1 { Nickname = "nickname13", Username = "username13" }, - - new IdentityUser1 { Nickname = "nickname21", Username = "username21" }, - new IdentityUser1 { Nickname = "nickname22", Username = "username22" }, - new IdentityUser1 { Nickname = "nickname23", Username = "username23" } - }; - fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows(); - fsql.Insert(bulkUsers).IgnoreInsertValueSql(a => a.Nickname).NoneParameter().ExecuteAffrows(); - bulkUsers = fsql.Select().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray(); - bulkUsers[0].Nickname += "_bulkupdate"; - bulkUsers[1].Nickname += "_bulkupdate"; - bulkUsers[2].Nickname += "_bulkupdate"; - fsql.Update().SetSource(bulkUsers).ExecuteSqlBulkCopy(); var objtsql1 = fsql.Select().WithSql("select * from user1").ToList(); diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs index 5d91055f..bc0a04ac 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerExtensions.cs @@ -160,7 +160,7 @@ public static partial class FreeSqlSqlServerGlobalExtensions var _table = upsert._table; var _commonUtils = upsert._commonUtils; var updateTableName = upsert._tableRule?.Invoke(_table.DbName) ?? _table.DbName; - var tempTableName = $"#Temp_{updateTableName}"; + var tempTableName = $"#Temp_{Guid.NewGuid().ToString("N")}"; if (upsert._orm.CodeFirst.IsSyncStructureToLower) tempTableName = tempTableName.ToLower(); if (upsert._orm.CodeFirst.IsSyncStructureToUpper) tempTableName = tempTableName.ToUpper(); if (upsert._connection == null && upsert._orm.Ado.TransactionCurrentThread != null) @@ -201,7 +201,7 @@ public static partial class FreeSqlSqlServerGlobalExtensions var _table = update._table; var _commonUtils = update._commonUtils; var updateTableName = update._tableRule?.Invoke(_table.DbName) ?? _table.DbName; - var tempTableName = $"#Temp_{updateTableName}"; + var tempTableName = $"#Temp_{Guid.NewGuid().ToString("N")}"; if (update._orm.CodeFirst.IsSyncStructureToLower) tempTableName = tempTableName.ToLower(); if (update._orm.CodeFirst.IsSyncStructureToUpper) tempTableName = tempTableName.ToUpper(); if (update._connection == null && update._orm.Ado.TransactionCurrentThread != null)