diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index f75b1ff56..ad7498c23 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -312,6 +312,7 @@ namespace SqlSugar } catch (Exception ex) { + CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); throw ex; @@ -346,6 +347,7 @@ namespace SqlSugar } catch (Exception ex) { + CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); throw ex; @@ -375,6 +377,7 @@ namespace SqlSugar } catch (Exception ex) { + CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); throw ex; @@ -403,6 +406,7 @@ namespace SqlSugar } catch (Exception ex) { + CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); throw ex; @@ -434,6 +438,7 @@ namespace SqlSugar } catch (Exception ex) { + CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql,parameters,ex); throw ex; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index 8c551d0f2..8bf314e73 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -22,7 +22,8 @@ namespace SqlSugar return this; } - public virtual ICodeFirst SetStringDefaultLength(int length) { + public virtual ICodeFirst SetStringDefaultLength(int length) + { DefultLength = length; return this; } @@ -43,7 +44,23 @@ namespace SqlSugar }); Check.Exception(!executeResult.IsSuccess, executeResult.ErrorMessage); } - public virtual void InitTables(Type[] entityTypes) + public void InitTables() + { + InitTables(typeof(T)); + } + public void InitTables() + { + InitTables(typeof(T),typeof(T2)); + } + public void InitTables() + { + InitTables(typeof(T), typeof(T2),typeof(T3)); + } + public void InitTables() + { + InitTables(typeof(T), typeof(T2), typeof(T3),typeof(T4)); + } + public virtual void InitTables(params Type[] entityTypes) { if (entityTypes.HasValue()) { @@ -74,10 +91,12 @@ namespace SqlSugar protected virtual void Execute(Type entityType) { var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(entityType); - if (this.DefultLength > 0) { + if (this.DefultLength > 0) + { foreach (var item in entityInfo.Columns) { - if (item.PropertyInfo.PropertyType == UtilConstants.StringType && item.DataType.IsNullOrEmpty()&& item.Length==0) { + if (item.PropertyInfo.PropertyType == UtilConstants.StringType && item.DataType.IsNullOrEmpty() && item.Length == 0) + { item.Length = DefultLength; } } @@ -98,13 +117,13 @@ namespace SqlSugar List columns = new List(); if (entityInfo.Columns.HasValue()) { - foreach (var item in entityInfo.Columns.OrderBy(it=>it.IsPrimarykey?0:1).Where(it => it.IsIgnore == false)) + foreach (var item in entityInfo.Columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).Where(it => it.IsIgnore == false)) { DbColumnInfo dbColumnInfo = EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } } - this.Context.DbMaintenance.CreateTable(tableName, columns,true); + this.Context.DbMaintenance.CreateTable(tableName, columns, true); } public virtual void ExistLogic(EntityInfo entityInfo) { @@ -136,7 +155,7 @@ namespace SqlSugar .ToList(); - var isMultiplePrimaryKey = dbColumns.Where(it => it.IsPrimarykey).Count() > 1|| entityColumns.Where(it => it.IsPrimarykey).Count() > 1; + var isMultiplePrimaryKey = dbColumns.Where(it => it.IsPrimarykey).Count() > 1 || entityColumns.Where(it => it.IsPrimarykey).Count() > 1; var isChange = false; @@ -167,7 +186,7 @@ namespace SqlSugar if (dbColumn == null) continue; bool pkDiff, idEntityDiff; KeyAction(item, dbColumn, out pkDiff, out idEntityDiff); - if (dbColumn != null && pkDiff && !idEntityDiff&& isMultiplePrimaryKey==false) + if (dbColumn != null && pkDiff && !idEntityDiff && isMultiplePrimaryKey == false) { var isAdd = item.IsPrimarykey; if (isAdd) @@ -179,15 +198,17 @@ namespace SqlSugar this.Context.DbMaintenance.DropConstraint(tableName, string.Format("PK_{0}_{1}", tableName, item.DbColumnName)); } } - else if ((pkDiff || idEntityDiff)&& isMultiplePrimaryKey==false) + else if ((pkDiff || idEntityDiff) && isMultiplePrimaryKey == false) { ChangeKey(entityInfo, tableName, item); } } - if (isMultiplePrimaryKey) { - var oldPkNames = dbColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).OrderBy(it=>it).ToList(); - var newPkNames = entityColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).OrderBy(it=>it).ToList(); - if (!Enumerable.SequenceEqual(oldPkNames,newPkNames)) { + if (isMultiplePrimaryKey) + { + var oldPkNames = dbColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).OrderBy(it => it).ToList(); + var newPkNames = entityColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).OrderBy(it => it).ToList(); + if (!Enumerable.SequenceEqual(oldPkNames, newPkNames)) + { Check.Exception(true, ErrorMessage.GetThrowMessage("Modification of multiple primary key tables is not supported. Delete tables while creating", "不支持修改多主键表,请删除表在创建")); } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index d7cc65d9f..84c7105b0 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -121,6 +121,14 @@ namespace SqlSugar resolveExpress.IgnoreComumnList = Context.IgnoreColumns; resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices; } + resolveExpress.InitMappingInfo = Context.InitMppingInfo; + resolveExpress.RefreshMapping = () => + { + resolveExpress.MappingColumns = Context.MappingColumns; + resolveExpress.MappingTables = Context.MappingTables; + resolveExpress.IgnoreComumnList = Context.IgnoreColumns; + resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices; + }; resolveExpress.Resolve(expression, resolveType); this.Parameters.AddRange(resolveExpress.Parameters); var result = resolveExpress.Result; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs index 2c6ba591c..921b4213c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs @@ -162,7 +162,15 @@ namespace SqlSugar else if (isMapping) { var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase)); - return SqlTranslationLeft + (mappingInfo == null ? entityName : mappingInfo.DbTableName) + SqlTranslationRight; + var name = (mappingInfo == null ? entityName : mappingInfo.DbTableName); + if (name.Contains(".")) + { + return string.Join(".", name.Split('.').Select(it => SqlTranslationLeft + it + SqlTranslationRight)); + } + else + { + return SqlTranslationLeft + name + SqlTranslationRight; + } } else if (isComplex) { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs index 54978a63b..c0efaef9c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs @@ -124,9 +124,20 @@ namespace SqlSugar base.Expression = item; base.Start(); var subSql = base.Context.GetEqString(memberName, parameter.CommonTempData.ObjToString()); + if (subSql.Contains(",")) { + subSql = subSql.Replace(",", UtilConstants.ReplaceCommaKey); + } if (ResolveExpressType.Update == this.Context.ResolveType) { - subSql = Regex.Replace(subSql, @" \[\w+?\]\.| ""\w+?""\.| \`\w+?\`\.", this.Context.GetTranslationTableName(parameter.CurrentExpression.Type.Name,true) +"."); + string name = this.Context.GetTranslationTableName(parameter.CurrentExpression.Type.Name, true); + if (name.Contains(".")) + { + + } + else + { + subSql = Regex.Replace(subSql, @" \[\w+?\]\.| ""\w+?""\.| \`\w+?\`\.", name + "."); + } } parameter.Context.Result.Append(subSql); }); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubFromTable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubFromTable.cs index 13375ca3c..7db117ad9 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubFromTable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubFromTable.cs @@ -50,7 +50,7 @@ namespace SqlSugar this.Context.InitMappingInfo(entityType); this.Context.RefreshMapping(); } - var result= "FROM "+this.Context.GetTranslationTableName(name, true); + var result= "FROM "+this.Context.GetTranslationTableName(name,true); if (this.Context.SubQueryIndex > 0) { result += " subTableIndex"+this.Context.SubQueryIndex; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationServices/SerializeService.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationServices/SerializeService.cs index df7b7c1b1..1a8398c82 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationServices/SerializeService.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationServices/SerializeService.cs @@ -26,7 +26,7 @@ namespace SqlSugar } public class MyContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver { - + public MyContractResolver() { @@ -35,24 +35,31 @@ namespace SqlSugar protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) { - var list = type.GetProperties() - .Where(x => !x.GetCustomAttributes(true).Any(a => (a is SugarColumn) && ((SugarColumn)a).NoSerialize == true)) - .Select(p => new JsonProperty() - { - PropertyName = p.Name, - PropertyType = p.PropertyType, - Readable = true, - Writable = true, - ValueProvider = base.CreateMemberValueProvider(p) - }).ToList(); - foreach (var item in list) + if (type.IsAnonymousType()||type==UtilConstants.ObjType|| type.Namespace=="SqlSugar"|| type.IsClass()==false) { - if (UtilMethods.GetUnderType(item.PropertyType) == UtilConstants.DateType) - { - CreateDateProperty(type, item); - } + return base.CreateProperties(type, memberSerialization); + } + else + { + var list = type.GetProperties() + .Where(x => !x.GetCustomAttributes(true).Any(a => (a is SugarColumn) && ((SugarColumn)a).NoSerialize == true)) + .Select(p => new JsonProperty() + { + PropertyName = p.Name, + PropertyType = p.PropertyType, + Readable = true, + Writable = true, + ValueProvider = base.CreateMemberValueProvider(p) + }).ToList(); + foreach (var item in list) + { + if (UtilMethods.GetUnderType(item.PropertyType) == UtilConstants.DateType) + { + CreateDateProperty(type, item); + } + } + return list; } - return list; } private static void CreateDateProperty(Type type, JsonProperty item) @@ -66,5 +73,5 @@ namespace SqlSugar } } } - + } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ICodeFirst.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ICodeFirst.cs index 015c360f3..b72fc05a8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ICodeFirst.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ICodeFirst.cs @@ -7,11 +7,15 @@ namespace SqlSugar public partial interface ICodeFirst { SqlSugarClient Context { get; set; } - ICodeFirst BackupTable(int maxBackupDataRows=int.MaxValue); + ICodeFirst BackupTable(int maxBackupDataRows = int.MaxValue); ICodeFirst SetStringDefaultLength(int length); void InitTables(string entitiesNamespace); - void InitTables(string [] entitiesNamespaces); - void InitTables(params Type [] entityTypes); + void InitTables(string[] entitiesNamespaces); + void InitTables(params Type[] entityTypes); void InitTables(Type entityType); + void InitTables(); + void InitTables(); + void InitTables(); + void InitTables(); } }