Oracle bulkCopy

This commit is contained in:
sunkaixuna 2021-11-25 21:27:13 +08:00
parent 1045212056
commit c3ecc8c802
4 changed files with 131 additions and 10 deletions

View File

@ -42,7 +42,8 @@ namespace OrmTest
}
}
});
//db.DbMaintenance.DropTable("TESTFAST11");
//db.DbMaintenance.TruncateTable<TestFAST11>();
db.CodeFirst.InitTables<TestFAST11>();
//db.Insertable<TestFAST11>(new List<TestFAST11>() {
// new TestFAST11(){ Date=DateTime.Now, Id=Guid.NewGuid()+"", Sex=1 , }
@ -50,13 +51,14 @@ namespace OrmTest
//db.Fastest<TestFAST11>().BulkCopy(new List<TestFAST11>() {
// new TestFAST11(){ Date=DateTime.Now, Id=Guid.NewGuid()+"", Sex=1 , }
//});
var data = new List<TestFAST11>() {
new TestFAST11(){ Date=DateTime.Now, Id=Guid.NewGuid()+"", Sex=1 }
};
//db.Updateable(data).ExecuteCommand();
db.Fastest<TestFAST11>().BulkCopy(data);
var x = db.Queryable<TestFAST11>().ToList();
for (int i = 0; i < 2; i++)
{
db.Fastest<TestFAST11>().BulkCopy(new List<TestFAST11> { new TestFAST11() { Date = DateTime.Now, Id = Guid.NewGuid() + "", Sex = 1 } });
var x = db.Queryable<TestFAST11>().ToList();
var updaterows = db.Fastest<TestFAST11>().BulkUpdate(x);
}
}
}
}

View File

@ -34,6 +34,7 @@ namespace OrmTest
}
public static void Init()
{
Bulk();
CodeFirst();
Updateable();
Json();

View File

@ -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<UnitIdentity1>();
Db.DbMaintenance.TruncateTable<UnitIdentity1>();
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<UnitIdentity1>().BulkCopy(new List<UnitIdentity1>() {
data1
});
var list = Db.Queryable<UnitIdentity1>().ToList();
if (list.Count != 1 || data1.Name != list.First().Name)
{
throw new Exception("unit Bulk");
}
Db.Fastest<UnitIdentity1>().BulkCopy(new List<UnitIdentity1>() {
data2,
data3
});
list = Db.Queryable<UnitIdentity1>().ToList();
if (list.Count != 3 || !list.Any(it => it.Name == "c"))
{
throw new Exception("unit Bulk");
}
var xx=Db.Fastest<UnitIdentity1>().BulkUpdate(new List<UnitIdentity1>() {
new UnitIdentity1(){
Id=1,
Name="222"
},
new UnitIdentity1(){
Id=2,
Name="111"
}
});
list = Db.Queryable<UnitIdentity1>().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<UnitIdentity111>();
Db.DbMaintenance.TruncateTable<UnitIdentity111>();
var count = Db.Fastest<UnitIdentity111111111>().AS("UnitIdentity111").BulkCopy(new List<UnitIdentity111111111> {
new UnitIdentity111111111(){ Id=1, Name="jack" }
});
if (count == 0)
{
throw new Exception("unit Bulk");
}
count = Db.Fastest<UnitIdentity111111111>().AS("UnitIdentity111").BulkUpdate(new List<UnitIdentity111111111> {
new UnitIdentity111111111(){ Id=1, Name="jack" }
});
if (count == 0)
{
throw new Exception("unit Bulk");
}
Db.CodeFirst.InitTables<UnitTable001>();
Db.Fastest<UnitTable001>().BulkUpdate(new List<UnitTable001> {
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; }
}
}

View File

@ -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<T>().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<T>().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<T>().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<T>().AS(dt.TableName).ToList();
}