diff --git a/Src/Asp.NetCore2/SqlSeverTest/OracleTest/Demo/DemoO_Fastest.cs b/Src/Asp.NetCore2/SqlSeverTest/OracleTest/Demo/DemoO_Fastest.cs index 6ad605035..f3cc9dbc1 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/OracleTest/Demo/DemoO_Fastest.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/OracleTest/Demo/DemoO_Fastest.cs @@ -42,7 +42,8 @@ namespace OrmTest } } }); - + //db.DbMaintenance.DropTable("TESTFAST11"); + //db.DbMaintenance.TruncateTable(); db.CodeFirst.InitTables(); //db.Insertable(new List() { // new TestFAST11(){ Date=DateTime.Now, Id=Guid.NewGuid()+"", Sex=1 , } @@ -50,13 +51,14 @@ namespace OrmTest //db.Fastest().BulkCopy(new List() { // new TestFAST11(){ Date=DateTime.Now, Id=Guid.NewGuid()+"", Sex=1 , } //}); - var data = new List() { - new TestFAST11(){ Date=DateTime.Now, Id=Guid.NewGuid()+"", Sex=1 } - }; + //db.Updateable(data).ExecuteCommand(); - db.Fastest().BulkCopy(data); - var x = db.Queryable().ToList(); - + for (int i = 0; i < 2; i++) + { + db.Fastest().BulkCopy(new List { new TestFAST11() { Date = DateTime.Now, Id = Guid.NewGuid() + "", Sex = 1 } }); + var x = db.Queryable().ToList(); + var updaterows = db.Fastest().BulkUpdate(x); + } } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/Main.cs b/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/Main.cs index 02034efc6..0e75bd471 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/Main.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/Main.cs @@ -34,6 +34,7 @@ namespace OrmTest } public static void Init() { + Bulk(); CodeFirst(); Updateable(); Json(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/UBulkCopy.cs b/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/UBulkCopy.cs new file mode 100644 index 000000000..295db5037 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/OracleTest/UnitTest/UBulkCopy.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OrmTest +{ + public partial class NewUnitTest + { + public static void Bulk() + { + Db.CodeFirst.InitTables(); + Db.DbMaintenance.TruncateTable(); + var data1 = new UnitIdentity1() + { + Name = "a", + Id = 1 + }; + var data2 = new UnitIdentity1() + { + Name = "b", + Id = 2 + }; + var data3 = new UnitIdentity1() + { + Name = "c", + Id = 3 + }; + Db.Fastest().BulkCopy(new List() { + data1 + }); + var list = Db.Queryable().ToList(); + if (list.Count != 1 || data1.Name != list.First().Name) + { + throw new Exception("unit Bulk"); + } + + Db.Fastest().BulkCopy(new List() { + data2, + data3 + }); + list = Db.Queryable().ToList(); + if (list.Count != 3 || !list.Any(it => it.Name == "c")) + { + throw new Exception("unit Bulk"); + } + var xx=Db.Fastest().BulkUpdate(new List() { + new UnitIdentity1(){ + Id=1, + Name="222" + }, + new UnitIdentity1(){ + Id=2, + Name="111" + } + }); + list = Db.Queryable().ToList(); + if (list.First(it => it.Id == 1).Name != "222") + { + throw new Exception("unit Bulk"); + } + if (list.First(it => it.Id == 2).Name != "111") + { + throw new Exception("unit Bulk"); + } + if (list.First(it => it.Id == 3).Name != "c") + { + throw new Exception("unit Bulk"); + } + Db.CodeFirst.InitTables(); + Db.DbMaintenance.TruncateTable(); + var count = Db.Fastest().AS("UnitIdentity111").BulkCopy(new List { + new UnitIdentity111111111(){ Id=1, Name="jack" } + }); + if (count == 0) + { + throw new Exception("unit Bulk"); + } + count = Db.Fastest().AS("UnitIdentity111").BulkUpdate(new List { + new UnitIdentity111111111(){ Id=1, Name="jack" } + }); + if (count == 0) + { + throw new Exception("unit Bulk"); + } + Db.CodeFirst.InitTables(); + Db.Fastest().BulkUpdate(new List { + new UnitTable001(){ Id=1, table="a" } + }); + } + } + + public class UnitTable001 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true)] + public int Id { get; set; } + public string table { get; set; } + } + + public class UnitIdentity111 + { + public int Id { get; set; } + public string Name { get; set; } + } + public class UnitIdentity111111111 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true)] + public int Id { get; set; } + public string Name { get; set; } + } + public class UnitIdentity1 + { + [SqlSugar.SugarColumn(IsPrimaryKey = true)] + public int Id { get; set; } + public string Name { get; set; } + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs index 8851a9882..e8f78755b 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/SqlBuilder/OracleFastBuilder.cs @@ -22,10 +22,11 @@ namespace SqlSugar { //await Task.FromResult(0); //throw new Exception("Oracle no support BulkUpdate"); + var oldTableName = dt.TableName; var columns = this.Context.EntityMaintenance.GetEntityInfo().Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToArray(); - dt.TableName = "T" + SnowFlakeSingle.instance.getID().ToString().Substring(4, 10); - var sql = this.Context.Queryable().Where(it => false).Select("*").ToSql().Key; - await this.Context.Ado.ExecuteCommandAsync($"create global temporary table {dt.TableName} as {sql} "); + dt.TableName = "Temp" + SnowFlakeSingle.instance.getID().ToString(); + var sql = this.Context.Queryable().AS(oldTableName).Where(it => false).Select("*").ToSql().Key; + await this.Context.Ado.ExecuteCommandAsync($"create table {dt.TableName} as {sql} "); this.Context.DbMaintenance.AddPrimaryKeys(dt.TableName, columns); //var xxx = this.Context.Queryable().AS(dt.TableName).ToList(); }