diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index dd48e8cd6..52ed59297 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; +using System.Text.RegularExpressions; + namespace SqlSugar { public partial class CodeFirstProvider : ICodeFirst @@ -114,6 +116,16 @@ namespace SqlSugar { item.Length = DefultLength; } + if (item.DataType!=null&&item.DataType.Contains(",")&& !Regex.IsMatch(item.DataType,@"\d\,\d")) + { + var types = item.DataType.Split(',').Select(it => it.ToLower()).ToList(); + var mapingTypes=this.Context.Ado.DbBind.MappingTypes.Select(it=>it.Key.ToLower()).ToList(); + var mappingType=types.FirstOrDefault(it => mapingTypes.Contains(it)); + if (mappingType != null) + { + item.DataType = mappingType; + } + } } } var tableName = GetTableName(entityInfo); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index ac7aaacdf..43a25a86d 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -62,6 +62,7 @@ namespace SqlSugar } public IDeleteable AS(string tableName) { + if (tableName == null) return this; var entityName = typeof(T).Name; IsAs = true; OldMappingTableList = this.Context.MappingTables; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index c16512e94..ce3df8621 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -35,8 +35,11 @@ namespace SqlSugar #region Core public void AddQueue() { - var sqlObj = this.ToSql(); - this.Context.Queues.Add(sqlObj.Key, sqlObj.Value); + if (this.InsertObjs!=null&&this.InsertObjs.Length > 0&& this.InsertObjs[0]!=null) + { + var sqlObj = this.ToSql(); + this.Context.Queues.Add(sqlObj.Key, sqlObj.Value); + } } public virtual int ExecuteCommand() { @@ -165,6 +168,7 @@ namespace SqlSugar #region Setting public IInsertable AS(string tableName) { + if (tableName == null) return this; var entityName = typeof(T).Name; IsAs = true; OldMappingTableList = this.Context.MappingTables; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index e00d76b18..68910b7b8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -85,6 +85,7 @@ namespace SqlSugar } public ISugarQueryable AS(string tableName) { + if (tableName == null) return this; var entityName = typeof(T).Name; return _As(tableName, entityName); } @@ -1067,21 +1068,10 @@ namespace SqlSugar } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber) { - _RestoreMapping = false; - List result = null; - int count = this.Count(); - _RestoreMapping = true; - QueryBuilder.IsDisabledGobalFilter = UtilMethods.GetOldValue(QueryBuilder.IsDisabledGobalFilter, () => - { - QueryBuilder.IsDisabledGobalFilter = true; - if (count == 0) - result = new List(); - else - result = ToPageList(pageIndex, pageSize); - - }); - totalNumber = count; - return result; + var oldMapping = this.Context.MappingTables; + totalNumber = this.Clone().Count(); + this.Context.MappingTables = oldMapping; + return this.Clone().ToPageList(pageIndex, pageSize); } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber, ref int totalPage) { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs index 5e1130c95..414978be6 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs @@ -16,6 +16,7 @@ namespace SqlSugar List dbDataList = new List(); List, bool>, string>> whereFuncs = new List, bool>, string>>(); Expression> whereExpression; + private string asname { get; set; } public Storageable(List datas, SqlSugarProvider context) { this.Context = context; @@ -71,9 +72,9 @@ namespace SqlSugar { if (this.allDatas.Count == 0) return new StorageableResult() { - AsDeleteable = this.Context.Deleteable().Where(it => false), - AsInsertable = this.Context.Insertable(new List()), - AsUpdateable = this.Context.Updateable(new List()), + AsDeleteable = this.Context.Deleteable().AS(asname).Where(it => false), + AsInsertable = this.Context.Insertable(new List()).AS(asname), + AsUpdateable = this.Context.Updateable(new List()).AS(asname), InsertList = new List>(), UpdateList = new List>(), DeleteList = new List>(), @@ -90,7 +91,7 @@ namespace SqlSugar if (whereExpression == null && pkInfos.Any()) { this.Context.Utilities.PageEach(allDatas, 300, item => { - var addItems=this.Context.Queryable().WhereClassByPrimaryKey(item.Select(it => it.Item).ToList()).ToList(); + var addItems=this.Context.Queryable().AS(asname).WhereClassByPrimaryKey(item.Select(it => it.Item).ToList()).ToList(); dbDataList.AddRange(addItems); }); } @@ -120,9 +121,9 @@ namespace SqlSugar var other = messageList.Where(it => it.StorageType == StorageType.Other).ToList(); StorageableResult result = new StorageableResult() { - AsDeleteable = this.Context.Deleteable(), - AsUpdateable = this.Context.Updateable(update.Select(it => it.Item).ToList()), - AsInsertable = this.Context.Insertable(inset.Select(it => it.Item).ToList()), + AsDeleteable = this.Context.Deleteable().AS(asname), + AsUpdateable = this.Context.Updateable(update.Select(it => it.Item).ToList()).AS(asname), + AsInsertable = this.Context.Insertable(inset.Select(it => it.Item).ToList()).AS(asname), OtherList = other, InsertList = inset, DeleteList = delete, @@ -175,7 +176,7 @@ namespace SqlSugar { List conditList = new List(); SetConditList(itemList, whereColumns, conditList); - var addItem = this.Context.Queryable().Where(conditList).ToList(); + var addItem = this.Context.Queryable().AS(asname).Where(conditList).ToList(); this.dbDataList.AddRange(addItem); }); } @@ -238,5 +239,11 @@ namespace SqlSugar var result = resolveExpress.Result; return result; } + + public IStorageable As(string tableName) + { + this.asname = tableName; + return this; + } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index fb38272f1..475a068b8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -261,7 +261,7 @@ namespace SqlSugar var isSingleTableHasSubquery = IsSingle() && resolveExpress.SingleTableNameSubqueryShortName.HasValue(); if (isSingleTableHasSubquery) { - Check.Exception(!string.IsNullOrEmpty(this.TableShortName) && resolveExpress.SingleTableNameSubqueryShortName != this.TableShortName, "{0} and {1} need same name"); + Check.Exception(!string.IsNullOrEmpty(this.TableShortName) && resolveExpress.SingleTableNameSubqueryShortName != this.TableShortName, "{0} and {1} need same name", resolveExpress.SingleTableNameSubqueryShortName, this.TableShortName); this.TableShortName = resolveExpress.SingleTableNameSubqueryShortName; } return result; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index a68315ea8..d9ae2722c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -114,6 +114,7 @@ namespace SqlSugar } public IUpdateable AS(string tableName) { + if (tableName == null) return this; var entityName = typeof(T).Name; IsAs = true; OldMappingTableList = this.Context.MappingTables; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs index d95d68298..419689bd4 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs @@ -31,6 +31,7 @@ namespace SqlSugar public InitKeyType InitKeyType = InitKeyType.Attribute; /// ///If true, there is only one connection instance in the same thread within the same connection string + [Obsolete("use SqlSugar.Ioc")] /// public bool IsShardSameThread { get; set; } /// diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 7668406a7..571015e3f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -90,11 +90,27 @@ namespace SqlSugar break; case ResolveExpressType.FieldSingle: fieldName = GetSingleName(parameter, expression, isLeft); - base.Context.Result.Append(fieldName); + var fieldIsCommonTemp = IsFieldIsCommonTemp(isSetTempData,parameter); + if (fieldIsCommonTemp) + { + baseParameter.CommonTempData = fieldName; + } + else + { + base.Context.Result.Append(fieldName); + } break; case ResolveExpressType.FieldMultiple: fieldName = GetMultipleName(parameter, expression, isLeft); - base.Context.Result.Append(fieldName); + var fieldIsCommonTemp2= IsFieldIsCommonTemp(isSetTempData, parameter); + if(fieldIsCommonTemp2) + { + baseParameter.CommonTempData = fieldName; + } + else + { + base.Context.Result.Append(fieldName); + } break; case ResolveExpressType.ArrayMultiple: case ResolveExpressType.ArraySingle: @@ -106,6 +122,15 @@ namespace SqlSugar } } + private bool IsFieldIsCommonTemp(bool isSetTempData, ExpressionParameter parameter) + { + if (parameter.BaseParameter == null) + return false; + var childExpression= parameter.BaseParameter.ChildExpression.ObjToString(); + var expression=parameter.BaseParameter.CurrentExpression.ObjToString(); + return isSetTempData&&((childExpression+".Date")==expression); + } + #endregion #region Resolve Where @@ -117,12 +142,12 @@ namespace SqlSugar if (ExpressionTool.IsConstExpression(expression)) { var value = ExpressionTool.GetMemberValue(expression.Member, expression); - baseParameter.CommonTempData = value+"=1 "; + baseParameter.CommonTempData = value + "=1 "; } else { fieldName = GetName(parameter, expression, null, isSingle); - baseParameter.CommonTempData = fieldName+"=1 "; + baseParameter.CommonTempData = fieldName + "=1 "; } } else @@ -130,12 +155,12 @@ namespace SqlSugar if (ExpressionTool.IsConstExpression(expression)) { var value = ExpressionTool.GetMemberValue(expression.Member, expression); - base.AppendValue(parameter, isLeft, value+"=1 "); + base.AppendValue(parameter, isLeft, value + "=1 "); } else { fieldName = GetName(parameter, expression, isLeft, isSingle); - AppendMember(parameter, isLeft, fieldName+"=1 "); + AppendMember(parameter, isLeft, fieldName + "=1 "); } } } @@ -209,9 +234,9 @@ namespace SqlSugar base.AppendValue(parameter, isLeft, value); } } - catch + catch { - Check.Exception(true, "Not Support {0}",expression.ToString()); + Check.Exception(true, "Not Support {0}", expression.ToString()); } } @@ -219,7 +244,7 @@ namespace SqlSugar { expression = expression.Expression as MemberExpression; baseParameter.ChildExpression = expression; - if (UtilMethods.GetUnderType(expression.Type) == UtilConstants.BoolType&¶meter.BaseExpression!=null&&ExpressionTool.IsLogicOperator(parameter.BaseExpression)) + if (UtilMethods.GetUnderType(expression.Type) == UtilConstants.BoolType && parameter.BaseExpression != null && ExpressionTool.IsLogicOperator(parameter.BaseExpression)) { ResolveBoolLogic(parameter, baseParameter, expression, isLeft, isSetTempData, isSingle); } @@ -332,7 +357,7 @@ namespace SqlSugar var methodParamter = new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null }; if (expression.Expression?.Type != null) { - methodParamter.Type =UtilMethods.GetUnderType(expression.Expression?.Type); + methodParamter.Type = UtilMethods.GetUnderType(expression.Expression?.Type); } var result = this.Context.DbMehtods.HasValue(new MethodCallExpressionModel() { @@ -346,7 +371,7 @@ namespace SqlSugar { base.Context.Result.Replace(ExpressionConst.FormatSymbol, ""); } - this.Context.Result.Append(result+" "+ExpressionTool.GetOperator(parameter.BaseExpression.NodeType)+" "); + this.Context.Result.Append(result + " " + ExpressionTool.GetOperator(parameter.BaseExpression.NodeType) + " "); } else { @@ -449,7 +474,7 @@ namespace SqlSugar }; return this.Context.DbMehtods.DateValue(pars); } - + private string GetToDateShort(string value) { var pars = new MethodCallExpressionModel() diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IStorageable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IStorageable.cs index 5cf690099..090f64fd8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IStorageable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IStorageable.cs @@ -17,6 +17,7 @@ namespace SqlSugar IStorageable SplitDelete(Func, bool> conditions, string message = null); IStorageable SplitOther(Func, bool> conditions, string message = null); StorageableResult ToStorage(); + IStorageable As(string tableName); } public class StorageableInfo where T : class, new() diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs index 534f0d147..f76da6120 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs @@ -148,7 +148,7 @@ namespace SqlSugar break; case DateType.Day: parameter2 = "%d"; - break; + return string.Format(" CAST(STRFTIME('{1}', DATETIME(DATETIME(strftime('%Y-%m-%d', {0})), 'LOCALTIME')) AS INTEGER)", parameter.MemberName, parameter2); case DateType.Hour: parameter2 = "%H"; break; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj index 4cca1da02..7467ceaeb 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 5.0.2.9 + 5.0.3 sun_kai_xuan https://github.com/sunkaixuan/SqlSugar diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs index 3cebfd7c6..e5aec9502 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs @@ -593,9 +593,10 @@ namespace SqlSugar } public void ChangeDatabase(dynamic configId) { + configId =Convert.ToString(configId); var isLog = _Context.Ado.IsEnableLogEvent; - Check.Exception(!_AllClients.Any(it => it.ConnectionConfig.ConfigId == configId), "ConfigId was not found {0}", configId); - InitTenant(_AllClients.First(it => it.ConnectionConfig.ConfigId == configId)); + Check.Exception(!_AllClients.Any(it =>Convert.ToString( it.ConnectionConfig.ConfigId) == configId), "ConfigId was not found {0}", configId); + InitTenant(_AllClients.First(it => Convert.ToString(it.ConnectionConfig.ConfigId )== configId)); if (this._IsAllTran) this.Ado.BeginTran(); if (this._IsOpen)