Update oracle bulkcopyupdate

This commit is contained in:
sunkaixuan
2023-04-24 20:31:21 +08:00
parent f336506c1d
commit efd3b2d1e5
3 changed files with 8 additions and 10 deletions

View File

@@ -178,6 +178,11 @@ namespace SqlSugar
IFastBuilder buider = GetBuider();
ActionIgnoreColums(whereColumns, updateColumns, dt, buider.IsActionUpdateColumns);
buider.Context = context;
if (buider.DbFastestProperties == null)
{
buider.DbFastestProperties = new DbFastestProperties();
}
buider.DbFastestProperties.WhereColumns = whereColumns;
await buider.CreateTempAsync<T>(dt);
await buider.ExecuteBulkCopyAsync(dt);
//var queryTemp = this.context.Queryable<T>().AS(dt.TableName).ToList();//test

View File

@@ -9,5 +9,6 @@ namespace SqlSugar
public class DbFastestProperties
{
public bool HasOffsetTime { get; set; }
public string[] WhereColumns { get; set; }
}
}

View File

@@ -25,17 +25,9 @@ namespace SqlSugar
var oldTableName = dt.TableName;
var columns = this.Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToList();
dt.TableName = "Temp" + SnowFlakeSingle.instance.getID().ToString();
if (columns.Count() == 0)
if (columns.Count() == 0&& DbFastestProperties!=null&& DbFastestProperties.WhereColumns.HasValue())
{
var pkColumn = sqlBuilder.GetTranslationColumnName("sys_guid_Id");
var pkColumnName = sqlBuilder.GetNoTranslationColumnName( sqlBuilder.GetTranslationColumnName("sys_guid_Id"));
dts.Add("sys_guid() as " + pkColumn);
dt.Columns.Add(pkColumnName,typeof(Guid));
columns.Add(pkColumnName);
foreach (DataRow item in dt.Rows)
{
item[pkColumnName] = Guid.NewGuid();
}
columns.AddRange(DbFastestProperties.WhereColumns);
}
var sql = this.Context.Queryable<T>().AS(oldTableName).Where(it => false).Select(string.Join(",", dts)).ToSql().Key;
await this.Context.Ado.ExecuteCommandAsync($"create table {dt.TableName} as {sql} ");