diff --git a/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs b/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs index f98016e15..f1c8323df 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs @@ -69,6 +69,15 @@ namespace OrmTest Console.WriteLine(); ////强制分表类型 var x4 = db.Insertable(new OrderSpliteTest() { Name = "A" ,Time=DateTime.Now.AddDays(-1) }).SplitTable().ExecuteCommand(); + + //分表支持BulkCopy + db.Fastest().SplitTable().BulkCopy(new List { + new OrderSpliteTest() { Pk=Guid.NewGuid(),Name ="a", Time = DateTime.Now }, + new OrderSpliteTest() {Pk=Guid.NewGuid(),Name ="a", Time = DateTime.Now }, + new OrderSpliteTest() {Pk=Guid.NewGuid(),Name ="a", Time = DateTime.Now.AddMonths(-10) } + }); + + db.Fastest().SplitTable().BulkUpdate(db.Queryable().SplitTable(it=>it).ToList()); Console.WriteLine("#### CodeFirst end ####"); } diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/SplitFastest.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/SplitFastest.cs index 6f423e000..a82d93da0 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/SplitFastest.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/SplitFastest.cs @@ -10,6 +10,8 @@ namespace SqlSugar public class SplitFastestwhere T:class,new() { public FastestProvider FastestProvider { get; set; } + public SqlSugarProvider Context { get { return this.FastestProvider.context; } } + public EntityInfo EntityInfo { get { return this.Context.EntityMaintenance.GetEntityInfo(); } } public int BulkCopy(List datas) { List groupModels; @@ -17,6 +19,7 @@ namespace SqlSugar GroupDataList(datas, out groupModels, out result); foreach (var item in groupModels.GroupBy(it => it.GroupName)) { + CreateTable(item.Key); var addList = item.Select(it => it.Item).ToList(); result += FastestProvider.AS(item.Key).BulkCopy(addList); ; } @@ -29,6 +32,7 @@ namespace SqlSugar GroupDataList(datas, out groupModels, out result); foreach (var item in groupModels.GroupBy(it => it.GroupName)) { + CreateTable(item.Key); var addList = item.Select(it => it.Item).ToList(); result +=await FastestProvider.AS(item.Key).BulkCopyAsync(addList); ; } @@ -43,6 +47,7 @@ namespace SqlSugar GroupDataList(datas, out groupModels, out result); foreach (var item in groupModels.GroupBy(it => it.GroupName)) { + CreateTable(item.Key); var addList = item.Select(it => it.Item).ToList(); result += FastestProvider.AS(item.Key).BulkUpdate(addList); ; } @@ -55,6 +60,7 @@ namespace SqlSugar GroupDataList(datas, out groupModels, out result); foreach (var item in groupModels.GroupBy(it => it.GroupName)) { + CreateTable(item.Key); var addList = item.Select(it => it.Item).ToList(); result += await FastestProvider.AS(item.Key).BulkUpdateAsync(addList); ; } @@ -86,7 +92,18 @@ namespace SqlSugar } return result; } - + private void CreateTable(string tableName) + { + var isLog = this.Context.Ado.IsEnableLogEvent; + this.Context.Ado.IsEnableLogEvent = false; + if (!this.Context.DbMaintenance.IsAnyTable(tableName, false)) + { + this.Context.MappingTables.Add(EntityInfo.EntityName, tableName); + this.Context.CodeFirst.InitTables(); + } + this.Context.Ado.IsEnableLogEvent = isLog; + this.Context.MappingTables.Add(EntityInfo.EntityName, EntityInfo.DbTableName); + } private void GroupDataList(List datas, out List groupModels, out int result) {