mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-03 12:18:00 +08:00
Synchronization code
This commit is contained in:
parent
2fec6c07fb
commit
f9221f173c
@ -232,13 +232,18 @@ namespace SqlSugar
|
||||
var isAuto = this.context.CurrentConnectionConfig.IsAutoCloseConnection;
|
||||
this.context.CurrentConnectionConfig.IsAutoCloseConnection = false;
|
||||
dataTable.TableName = this.queryable.SqlBuilder.GetTranslationTableName(tableName);
|
||||
DataTable dt = GetCopyWriteDataTable(dataTable);
|
||||
DataTable dt = GetCopyWriteDataTableUpdate(dataTable);
|
||||
IFastBuilder buider = GetBuider();
|
||||
if (dt.Columns.Count != dataTable.Columns.Count)
|
||||
{
|
||||
ActionIgnoreColums(whereColumns, updateColumns, dt, buider.IsActionUpdateColumns);
|
||||
}
|
||||
buider.Context = context;
|
||||
if (buider.DbFastestProperties == null)
|
||||
{
|
||||
buider.DbFastestProperties = new DbFastestProperties();
|
||||
}
|
||||
buider.DbFastestProperties.WhereColumns = whereColumns;
|
||||
await buider.CreateTempAsync<object>(dt);
|
||||
await buider.ExecuteBulkCopyAsync(dt);
|
||||
//var queryTemp = this.context.Queryable<T>().AS(dt.TableName).ToList();//test
|
||||
|
@ -212,7 +212,53 @@ namespace SqlSugar
|
||||
tempDataTable.TableName = dt.TableName;
|
||||
return tempDataTable;
|
||||
}
|
||||
private DataTable GetCopyWriteDataTableUpdate(DataTable dt)
|
||||
{
|
||||
var sqlBuilder = this.context.Queryable<object>().SqlBuilder;
|
||||
var dts = dt.Columns.Cast<DataColumn>().Select(it => sqlBuilder.GetTranslationColumnName(it.ColumnName)).ToList();
|
||||
DataTable tempDataTable = null;
|
||||
if (AsName == null)
|
||||
{
|
||||
tempDataTable = queryable.Where(it => false).Select(string.Join(",", dts)).ToDataTable();
|
||||
}
|
||||
else
|
||||
{
|
||||
tempDataTable = queryable.AS(AsName).Where(it => false).Select(string.Join(",", dts)).ToDataTable();
|
||||
};
|
||||
List<string> uInt64TypeName = new List<string>();
|
||||
foreach (DataColumn item in tempDataTable.Columns)
|
||||
{
|
||||
if (item.DataType == typeof(UInt64))
|
||||
{
|
||||
uInt64TypeName.Add(item.ColumnName);
|
||||
}
|
||||
}
|
||||
var temColumnsList = tempDataTable.Columns.Cast<DataColumn>().Select(it => it.ColumnName.ToLower()).ToList();
|
||||
var columns = dt.Columns.Cast<DataColumn>().Where(it => temColumnsList.Contains(it.ColumnName.ToLower())).ToList();
|
||||
foreach (DataRow item in dt.Rows)
|
||||
{
|
||||
DataRow dr = tempDataTable.NewRow();
|
||||
foreach (DataColumn column in columns)
|
||||
{
|
||||
|
||||
dr[column.ColumnName] = item[column.ColumnName];
|
||||
if (dr[column.ColumnName] == null || dr[column.ColumnName] == DBNull.Value)
|
||||
{
|
||||
dr[column.ColumnName] = DBNull.Value;
|
||||
}
|
||||
else if (column.DataType == UtilConstants.BoolType && this.context.CurrentConnectionConfig.DbType.IsIn(DbType.MySql, DbType.MySqlConnector))
|
||||
{
|
||||
if (Convert.ToBoolean(dr[column.ColumnName]) == false && uInt64TypeName.Any(z => z.EqualCase(column.ColumnName)))
|
||||
{
|
||||
dr[column.ColumnName] = DBNull.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
tempDataTable.Rows.Add(dr);
|
||||
}
|
||||
tempDataTable.TableName = dt.TableName;
|
||||
return tempDataTable;
|
||||
}
|
||||
|
||||
private void RemoveCache()
|
||||
{
|
||||
|
@ -624,9 +624,9 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.EntityInfo.Columns.Any(it => it.InsertServerTime || it.UpdateSql.HasValue()))
|
||||
if (this.EntityInfo.Columns.Any(it => it.UpdateServerTime || it.UpdateSql.HasValue()))
|
||||
{
|
||||
var appendColumns = this.EntityInfo.Columns.Where(it => it.InsertServerTime || it.UpdateSql.HasValue());
|
||||
var appendColumns = this.EntityInfo.Columns.Where(it => it.UpdateServerTime || it.UpdateSql.HasValue());
|
||||
foreach (var item in appendColumns)
|
||||
{
|
||||
if (item.UpdateServerTime)
|
||||
|
@ -9,5 +9,6 @@ namespace SqlSugar
|
||||
public class DbFastestProperties
|
||||
{
|
||||
public bool HasOffsetTime { get; set; }
|
||||
public string[] WhereColumns { get; set; }
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user