From 7c6fa89831dadfe0571fcb842614467baa632cd9 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 21 May 2017 01:40:06 +0800 Subject: [PATCH] - --- .../SqlBuilder/DMLBuilder/InsertBuilder.cs | 6 +++--- .../SqlBuilder/DMLBuilder/UpdateBuilder.cs | 20 +++++++++++++------ .../DbMaintenanceProvider.cs | 4 ++-- .../InsertableProvider/InsertableProvider.cs | 16 +++++++-------- .../UpdateProvider/UpdateableProvider.cs | 16 +++++++-------- SqlSugar/Common/IsWhatExtensions.cs | 10 +++++++++- SqlSugar/Entities/DbColumnInfo.cs | 4 ++-- .../Core/SqlBuilder/SqlServerDbMaintenance.cs | 2 +- 8 files changed, 47 insertions(+), 31 deletions(-) diff --git a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs index baf253380..42d0825db 100644 --- a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs @@ -100,10 +100,10 @@ namespace SqlSugar { var groupList = DbColumnInfoList.GroupBy(it => it.TableId).ToList(); var isSingle = groupList.Count() == 1; - string columnsString = string.Join(",", groupList.First().Select(it => Builder.GetTranslationColumnName(it.ColumnName))); + string columnsString = string.Join(",", groupList.First().Select(it => Builder.GetTranslationColumnName(it.DbColumnName))); if (isSingle) { - string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.ColumnName)); + string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.DbColumnName)); return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString); } else { @@ -122,7 +122,7 @@ namespace SqlSugar { batchInsetrSql.Append(SqlTemplateBatchUnion); } - batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.ColumnName)))); + batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.DbColumnName)))); ++i; } pageIndex++; diff --git a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/UpdateBuilder.cs b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/UpdateBuilder.cs index c7281e770..1e39a82d8 100644 --- a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/UpdateBuilder.cs +++ b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/UpdateBuilder.cs @@ -26,6 +26,7 @@ namespace SqlSugar public List WhereValues { get; set; } public List> SetValues { get; set; } public bool IsUpdateNull { get; set; } + public List PrimaryKeys { get; set; } public virtual string SqlTemplate { @@ -89,9 +90,6 @@ namespace SqlSugar return result; } } - - public List PrimaryKeys { get; internal set; } - public virtual ExpressionResult GetExpressionValue(Expression expression, ResolveExpressType resolveType, bool isMapping = true) { ILambdaExpressions resolveExpress = this.LambdaExpressions; @@ -112,7 +110,17 @@ namespace SqlSugar { var groupList = DbColumnInfoList.GroupBy(it => it.TableId).ToList(); var isSingle = groupList.Count() == 1; - string columnsString = string.Join(",", groupList.First().Select(it => Builder.GetTranslationColumnName(it.ColumnName) + "=" + this.Context.Ado.SqlParameterKeyWord + it.ColumnName)); + string columnsString = string.Join(",", groupList.First().Select(it => + { + if (SetValues.IsValuable()) { + var setValue = SetValues.Where(sv => sv.Key == Builder.GetTranslationColumnName(it.DbColumnName)); + if (setValue != null&& setValue.Any()) { + return setValue.First().Value; + } + } + var result = Builder.GetTranslationColumnName(it.DbColumnName) + "=" + this.Context.Ado.SqlParameterKeyWord + it.DbColumnName; + return result; + })); if (isSingle) { string whereString = null; @@ -125,7 +133,7 @@ namespace SqlSugar whereString += item; } } - else if(PrimaryKeys.IsValuable()) + else if (PrimaryKeys.IsValuable()) { foreach (var item in PrimaryKeys) { @@ -156,7 +164,7 @@ namespace SqlSugar { batchInsetrSql.Append(SqlTemplateBatchUnion); } - batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.ColumnName)))); + batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.DbColumnName)))); ++i; } pageIndex++; diff --git a/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs b/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs index 83f35bee2..d6ba962f4 100644 --- a/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs +++ b/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs @@ -35,13 +35,13 @@ namespace SqlSugar public virtual List GetIsIdentities(string tableName) { var result = GetColumnInfosByTableName(tableName).Where(it => it.IsIdentity).ToList(); - return result.Select(it => it.ColumnName).ToList(); + return result.Select(it => it.DbColumnName).ToList(); } public virtual List GetPrimaries(string tableName) { var result = GetColumnInfosByTableName(tableName).Where(it => it.IsPrimarykey).ToList(); - return result.Select(it => it.ColumnName).ToList(); + return result.Select(it => it.DbColumnName).ToList(); } public bool AddColumnToTable(string tableName, DbColumnInfo column) diff --git a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 3fccd6d89..87e7cada4 100644 --- a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -50,19 +50,19 @@ namespace SqlSugar public IInsertable IgnoreColumns(Expression> columns) { var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); - this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.EntityPropertyName)).ToList(); + this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList(); return this; } public IInsertable IgnoreColumns(Func ignoreColumMethod) { - this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.EntityPropertyName)).ToList(); + this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.PropertyName)).ToList(); return this; } public IInsertable InsertColumns(Expression> columns) { var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); - this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.EntityPropertyName)).ToList(); + this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList(); return this; } @@ -93,7 +93,7 @@ namespace SqlSugar { this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => { - return !identities.Any(i => it.ColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase)); + return !identities.Any(i => it.DbColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase)); }).ToList(); } } @@ -105,7 +105,7 @@ namespace SqlSugar var currentIgnoreColumns = this.Context.IgnoreColumns.Where(it => it.EntityName == this.EntityInfo.EntityName).ToList(); this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => { - return !currentIgnoreColumns.Any(i => it.EntityPropertyName.Equals(i.EntityPropertyName, StringComparison.CurrentCulture)); + return !currentIgnoreColumns.Any(i => it.PropertyName.Equals(i.EntityPropertyName, StringComparison.CurrentCulture)); }).ToList(); } #endregion @@ -114,7 +114,7 @@ namespace SqlSugar foreach (var item in this.InsertBuilder.DbColumnInfoList) { if (this.InsertBuilder.Parameters == null) this.InsertBuilder.Parameters = new List(); - this.InsertBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.ColumnName, item.Value)); + this.InsertBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value)); } } } @@ -139,8 +139,8 @@ namespace SqlSugar var columnInfo = new DbColumnInfo() { Value = column.PropertyInfo.GetValue(item), - ColumnName = GetDbColumnName(column.PropertyName), - EntityPropertyName = column.PropertyName, + DbColumnName = GetDbColumnName(column.PropertyName), + PropertyName = column.PropertyName, TableId = i }; insertItem.Add(columnInfo); diff --git a/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 756014f72..c25339178 100644 --- a/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -29,14 +29,14 @@ namespace SqlSugar public IUpdateable IgnoreColumns(Func ignoreColumMethod) { - this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.EntityPropertyName)).ToList(); + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.PropertyName)).ToList(); return this; } public IUpdateable IgnoreColumns(Expression> columns) { var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); - this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.EntityPropertyName)).ToList(); + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList(); return this; } @@ -64,7 +64,7 @@ namespace SqlSugar public IUpdateable UpdateColumns(Expression> columns) { var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); - this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.EntityPropertyName)).ToList(); + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList(); return this; } @@ -105,8 +105,8 @@ namespace SqlSugar var columnInfo = new DbColumnInfo() { Value = column.PropertyInfo.GetValue(item), - ColumnName = GetDbColumnName(column.PropertyName), - EntityPropertyName = column.PropertyName, + DbColumnName = GetDbColumnName(column.PropertyName), + PropertyName = column.PropertyName, TableId = i }; insertItem.Add(columnInfo); @@ -126,7 +126,7 @@ namespace SqlSugar { this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => { - return !identities.Any(i => it.ColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase)); + return !identities.Any(i => it.DbColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase)); }).ToList(); } } @@ -138,7 +138,7 @@ namespace SqlSugar var currentIgnoreColumns = this.Context.IgnoreColumns.Where(it => it.EntityName == this.EntityInfo.EntityName).ToList(); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => { - return !currentIgnoreColumns.Any(i => it.EntityPropertyName.Equals(i.EntityPropertyName, StringComparison.CurrentCulture)); + return !currentIgnoreColumns.Any(i => it.PropertyName.Equals(i.EntityPropertyName, StringComparison.CurrentCulture)); }).ToList(); } #endregion @@ -147,7 +147,7 @@ namespace SqlSugar foreach (var item in this.UpdateBuilder.DbColumnInfoList) { if (this.UpdateBuilder.Parameters == null) this.UpdateBuilder.Parameters = new List(); - this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.ColumnName, item.Value)); + this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value)); } } } diff --git a/SqlSugar/Common/IsWhatExtensions.cs b/SqlSugar/Common/IsWhatExtensions.cs index af7240c5d..249df3163 100644 --- a/SqlSugar/Common/IsWhatExtensions.cs +++ b/SqlSugar/Common/IsWhatExtensions.cs @@ -109,7 +109,15 @@ namespace SqlSugar if (thisValue == null || thisValue.Count() == 0) return false; return true; } - + /// + /// 有值?(与IsNullOrEmpty相反) + /// + /// + public static bool IsValuable(this IEnumerable> thisValue) + { + if (thisValue == null || thisValue.Count() == 0) return false; + return true; + } /// /// 是零? /// diff --git a/SqlSugar/Entities/DbColumnInfo.cs b/SqlSugar/Entities/DbColumnInfo.cs index fef90d66d..54ade95b9 100644 --- a/SqlSugar/Entities/DbColumnInfo.cs +++ b/SqlSugar/Entities/DbColumnInfo.cs @@ -8,8 +8,8 @@ namespace SqlSugar { public string TableName { get; set; } public int TableId { get; set; } - public string ColumnName { get; set; } - public string EntityPropertyName { get; set; } + public string DbColumnName { get; set; } + public string PropertyName { get; set; } public string DataType { get; set; } public int Length { get; set; } public string ColumnDescription { get; set; } diff --git a/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerDbMaintenance.cs b/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerDbMaintenance.cs index 863b9a93b..7e716255f 100644 --- a/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerDbMaintenance.cs +++ b/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerDbMaintenance.cs @@ -38,7 +38,7 @@ namespace SqlSugar { string sql = @"SELECT Sysobjects.name AS TableName, syscolumns.Id AS TableId, - syscolumns.name AS ColumnName, + syscolumns.name AS DbColumnName, systypes.name AS DataType, syscolumns.length AS [Length], sys.extended_properties.[value] AS [ColumnDescription],