diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs index 103b189e8..9e29ffd2e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs @@ -17,11 +17,11 @@ namespace SqlSugar List pars; string where; LogicFieldName = _ExecuteCommand(LogicFieldName, out db, out where, out pars); - var updateable = db.Updateable().SetColumns(LogicFieldName, "@IsDeleted"); + var updateable = db.Updateable().SetColumns(LogicFieldName,true); if (pars != null) updateable.UpdateBuilder.Parameters.AddRange(pars); Convert(updateable as UpdateableProvider); - var result = updateable.Where(where, new { IsDeleted = true }).ExecuteCommand(); + var result = updateable.Where(where).ExecuteCommand(); return result; } public async Task ExecuteCommandAsync(string LogicFieldName = null) diff --git a/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs b/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs index 4b7165e10..75528ca3a 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs @@ -37,7 +37,7 @@ namespace SqlSugar result.IsDisabledUpdateAll = sugarTable.IsDisabledUpdateAll; result.IsDisabledDelete = sugarTable.IsDisabledDelete; } - if (this.Context.Context.CurrentConnectionConfig.ConfigureExternalServices != null && this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService != null) + if (this.Context.CurrentConnectionConfig.ConfigureExternalServices != null && this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService != null) { if (result.DbTableName == null) { diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs index 18225bf1d..c2a3c1e01 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs @@ -27,10 +27,11 @@ namespace SqlSugar public virtual async Task UpdateByTempAsync(string tableName, string tempName, string[] updateColumns, string[] whereColumns) { + var sqlbuilder = this.Context.Queryable().SqlBuilder; Check.ArgumentNullException(!updateColumns.Any(), "update columns count is 0"); Check.ArgumentNullException(!whereColumns.Any(), "where columns count is 0"); - var sets = string.Join(",", updateColumns.Select(it => $"TM.{it}=TE.{it}")); - var wheres = string.Join(",", whereColumns.Select(it => $"TM.{it}=TE.{it}")); + var sets = string.Join(",", updateColumns.Select(it => $"TM.{sqlbuilder.GetTranslationColumnName(it)}=TE.{sqlbuilder.GetTranslationColumnName(it)}")); + var wheres = string.Join(",", whereColumns.Select(it => $"TM.{sqlbuilder.GetTranslationColumnName(it)}=TE.{sqlbuilder.GetTranslationColumnName(it)}")); string sql = string.Format(UpdateSql, sets, tableName, tempName, wheres); return await this.Context.Ado.ExecuteCommandAsync(sql); } diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs index 3d1f7edd3..1c73d91ac 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs @@ -80,6 +80,8 @@ namespace SqlSugar private async Task _BulkUpdate(List datas, string[] whereColumns, string[] updateColumns) { Begin(datas); + Check.Exception(whereColumns == null || whereColumns.Count() == 0, "where columns count=0 or need primary key"); + Check.Exception(updateColumns == null || updateColumns.Count() == 0, "set columns count=0"); var isAuto = this.context.CurrentConnectionConfig.IsAutoCloseConnection; this.context.CurrentConnectionConfig.IsAutoCloseConnection = false; DataTable dt = ToDdateTable(datas); diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 7227bbd25..b1e619175 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -299,7 +299,14 @@ namespace SqlSugar { fieldName = columnInfo.DbColumnName; } - UpdateBuilder.SetValues.Add(new KeyValuePair(fieldName, fieldValue+"")); + var parameterName =this.SqlBuilder.SqlParameterKeyWord+ "Const" + this.UpdateBuilder.LambdaExpressions.ParameterIndex; + this.UpdateBuilder.LambdaExpressions.ParameterIndex = this.UpdateBuilder.LambdaExpressions.ParameterIndex+1; + if (UpdateBuilder.Parameters == null) + { + UpdateBuilder.Parameters = new List(); + } + UpdateBuilder.Parameters.Add(new SugarParameter(parameterName, fieldValue)); + UpdateBuilder.SetValues.Add(new KeyValuePair(SqlBuilder.GetTranslationColumnName(fieldName), $"{SqlBuilder.GetTranslationColumnName(fieldName)}={parameterName}")); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList(); AppendSets(); return this; diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs index 7955e6a95..56f7ceac0 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs @@ -44,7 +44,7 @@ namespace SqlSugar TableName = dt.TableName, Local = true, }; - bulk.Columns.AddRange(dt.Columns.Cast().Select(colum => colum.ColumnName).Distinct().ToArray()); + bulk.Columns.AddRange(dt.Columns.Cast().Select(colum =>new MySqlBuilder().GetTranslationColumnName(colum.ColumnName)).Distinct().ToArray()); result= await bulk.LoadAsync(); //执行成功才删除文件 if (File.Exists(fileName)) @@ -64,8 +64,10 @@ namespace SqlSugar } public override async Task CreateTempAsync(DataTable dt) { + var queryable = this.Context.Queryable(); + var tableName = queryable.SqlBuilder.GetTranslationTableName(dt.TableName); dt.TableName = "temp"+SnowFlakeSingle.instance.getID(); - var sql = this.Context.Queryable().Select("*").Where(it => false).ToSql().Key; + var sql = queryable.AS(tableName).Where(it => false).ToSql().Key; await this.Context.Ado.ExecuteCommandAsync($"Create TEMPORARY table {dt.TableName}({sql}) "); } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs index 6ed080558..dd63635de 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs @@ -59,7 +59,7 @@ namespace SqlSugar { return Convert.ToInt64(value); } - else if (type.IsIn(UtilConstants.IntType,UtilConstants.LongType,UtilConstants.ShortType)) + else if (type.IsIn(UtilConstants.IntType,UtilConstants.LongType,UtilConstants.ShortType)) { return value; } diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs index 8c6239f57..25d362aa1 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs @@ -85,6 +85,10 @@ namespace SqlSugar { this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName)); } + if (IsDistinct) + { + result = "distinct "+result; + } return result; } } diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlukCopy.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlukCopy.cs index 1fa1945af..3b03a1977 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlukCopy.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlukCopy.cs @@ -115,6 +115,7 @@ namespace SqlSugar { this.Context.Ado.Connection.Open(); } + copy.BulkCopyTimeout = this.Context.Ado.CommandTimeOut; return copy; } private DataTable GetCopyData() diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index f9de8ac50..786e0ba51 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -93,10 +93,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +