diff --git a/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Mapping .cs b/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Mapping .cs index b37a4fb37..dd193797f 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Mapping .cs +++ b/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Mapping .cs @@ -32,7 +32,7 @@ namespace OrmTest.UnitTest .GroupBy(st => st.Id) .GroupBy((st,sc) => sc.Id).OrderBy(st => st.Id,OrderByType.Asc) .Select((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql(); - base.Check(@"SELECT `st`.`ID` AS `stid` , `sc`.`id` AS `scid` FROM `STudent` st Left JOIN School sc ON ( `st`.`SchoolId` = `sc`.`id` ) WHERE ( `st`.`ID` = @Id0 ) AND ( `sc`.`id` = @Id1 ) AND ( `sc`.`id` = `st`.`ID` )GROUP BY `st`.`ID`,`sc`.`id`ORDER BY `st`.`ID` ASC ", + base.Check(@"SELECT `st`.`ID` AS `stid` , `sc`.`id` AS `scid` FROM `STudent` st Left JOIN School sc ON ( `st`.`SchoolId` = `sc`.`id` ) WHERE ( `st`.`ID` = @Id0 ) AND ( `sc`.`id` = @Id1 ) AND ( `sc`.`id` = `st`.`ID` )GROUP BY `st`.`ID`,`sc`.`id` ORDER BY `st`.`ID` ASC ", null, t2.Key, null, " Mapping t2 error"); var x2 = GetInstance(); } diff --git a/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Query/SelectQuery.cs b/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Query/SelectQuery.cs index acbcd386b..c169faec3 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Query/SelectQuery.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/MySqlTest/UnitTest/Query/SelectQuery.cs @@ -50,7 +50,7 @@ namespace OrmTest.UnitTest var t1 = db.Queryable((st, sc) => new object[] { JoinType.Inner,st.Id==sc.Id }).GroupBy(st => st.Id).Having(st => SqlFunc.AggregateAvg(st.Id) == 1).Select(st => new { avgId = SqlFunc.AggregateAvg(st.Id) }).ToSql(); - base.Check("SELECT AVG(`st`.`ID`) AS `avgId` FROM `STudent` st Inner JOIN School sc ON ( `st`.`ID` = `sc`.`Id` ) GROUP BY `st`.`ID` HAVING (AVG(`st`.`ID`) = @Const0 ) ", + base.Check("SELECT AVG(`st`.`ID`) AS `avgId` FROM `STudent` st Inner JOIN School sc ON ( `st`.`ID` = `sc`.`Id` ) GROUP BY `st`.`ID` HAVING (AVG(`st`.`ID`) = @Const0 ) ", new List() { new SugarParameter("@Const0",1) } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Mapping .cs b/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Mapping .cs index 9112e94f4..d54e02a4e 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Mapping .cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Mapping .cs @@ -32,7 +32,7 @@ namespace OrmTest.UnitTest .GroupBy(st => st.Id) .GroupBy((st,sc) => sc.Id).OrderBy(st => st.Id,OrderByType.Asc) .Select((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql(); - base.Check(@"SELECT [st].[ID] AS [stid] , [sc].[id] AS [scid] FROM [STudent] st Left JOIN School sc ON ( [st].[SchoolId] = [sc].[id] ) WHERE ( [st].[ID] = @Id0 ) AND ( [sc].[id] = @Id1 ) AND ( [sc].[id] = [st].[ID] )GROUP BY [st].[ID],[sc].[id]ORDER BY [st].[ID] ASC ", + base.Check(@"SELECT [st].[ID] AS [stid] , [sc].[id] AS [scid] FROM [STudent] st Left JOIN School sc ON ( [st].[SchoolId] = [sc].[id] ) WHERE ( [st].[ID] = @Id0 ) AND ( [sc].[id] = @Id1 ) AND ( [sc].[id] = [st].[ID] )GROUP BY [st].[ID],[sc].[id] ORDER BY [st].[ID] ASC ", null, t2.Key, null, " Mapping t2 error"); var x2 = GetInstance(); } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Query/SelectQuery.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Query/SelectQuery.cs index be6907b56..3154e896d 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Query/SelectQuery.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlServerTest/UnitTest/Query/SelectQuery.cs @@ -50,7 +50,7 @@ namespace OrmTest.UnitTest var t1 = db.Queryable((st, sc) => new object[] { JoinType.Inner,st.Id==sc.Id }).GroupBy(st => st.Id).Having(st => SqlFunc.AggregateAvg(st.Id) == 1).Select(st => new { avgId = SqlFunc.AggregateAvg(st.Id) }).ToSql(); - base.Check("SELECT AVG([st].[ID]) AS [avgId] FROM [STudent] st Inner JOIN School sc ON ( [st].[ID] = [sc].[Id] ) GROUP BY [st].[ID] HAVING (AVG([st].[ID]) = @Const0 ) ", + base.Check("SELECT AVG([st].[ID]) AS [avgId] FROM [STudent] st Inner JOIN School sc ON ( [st].[ID] = [sc].[Id] ) GROUP BY [st].[ID] HAVING (AVG([st].[ID]) = @Const0 ) ", new List() { new SugarParameter("@Const0",1) } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index 5284b7fa1..29ccf4175 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -22,7 +22,9 @@ namespace SqlSugar } public virtual void InitTables(Type entityType) { + this.Context.RewritableMethods.RemoveCacheAll(); + this.Context.InitMppingInfo(entityType); if (!this.Context.DbMaintenance.IsAnySystemTablePermissions()) { Check.Exception(true, "Dbfirst and Codefirst requires system table permissions"); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index cfdef3de8..d390000cd 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -236,7 +236,7 @@ namespace SqlSugar method = getString; if (bindProperyTypeName == "guid") { - method = getConvertStringGuid; + method =isNullableType? getConvertStringGuid : getStringGuid; } break; case CSharpDataType.DateTime: @@ -261,7 +261,8 @@ namespace SqlSugar method = isNullableType ? getConvertStringGuid : getStringGuid; break; case CSharpDataType.@byte: - method = isNullableType ? getConvertByte : getByte; + if (bindProperyTypeName == "byte") + method = isNullableType ? getConvertByte : getByte; break; case CSharpDataType.@enum: method = isNullableType ? getConvertEnum_Null.MakeGenericMethod(bindPropertyType) : getEnum.MakeGenericMethod(bindPropertyType); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index a65505304..29562a261 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -8,6 +8,8 @@ using System.Linq.Expressions; using System.Text; using System.Text.RegularExpressions; using System.Reflection; +using System.Dynamic; + namespace SqlSugar { #region T1 @@ -88,12 +90,14 @@ namespace SqlSugar } public virtual ISugarQueryable AddParameters(SugarParameter[] parameters) { - QueryBuilder.Parameters.AddRange(parameters); + if (parameters != null) + QueryBuilder.Parameters.AddRange(parameters); return this; } public virtual ISugarQueryable AddParameters(SugarParameter parameter) { - QueryBuilder.Parameters.Add(parameter); + if (parameter != null) + QueryBuilder.Parameters.Add(parameter); return this; } @@ -646,6 +650,10 @@ namespace SqlSugar var entityType = typeof(TResult); using (var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray())) { + if (typeof(TResult) == typeof(ExpandoObject)) + { + return this.Context.RewritableMethods.DataReaderToExpandoObjectList(dataReader) as List; + } if (entityType.IsAnonymousType() || isComplexModel) { result = this.Context.RewritableMethods.DataReaderToDynamicList(dataReader); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs index 53a56628f..770d969c0 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs @@ -138,7 +138,7 @@ namespace SqlSugar { batchInsetrSql.Append(SqlTemplateBatchUnion); } - batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.DbColumnName)))); + batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value),Builder.GetTranslationColumnName(it.DbColumnName))))); ++i; } pageIndex++; diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index bd27505b4..7e3ba6f72 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -448,6 +448,11 @@ namespace SqlSugar { get { + if (this.GroupByValue == null) return null; + if (this.GroupByValue.Last() != ' ' ) + { + return this.GroupByValue + PubConst.Space; + } return this.GroupByValue; } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index 3f8e2cb75..05dffc893 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -175,7 +175,7 @@ namespace SqlSugar { updateTable.Append(SqlTemplateBatchUnion); } - updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.DbColumnName)))); + updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value),Builder.GetTranslationColumnName(it.DbColumnName))))); ++i; } pageIndex++; diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Common/RewritableMethods.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Common/RewritableMethods.cs index 0968b8469..a193309a0 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Common/RewritableMethods.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Common/RewritableMethods.cs @@ -36,6 +36,24 @@ namespace SqlSugar return result; } + /// + ///DataReader to Dynamic List + /// + /// + /// + public List DataReaderToExpandoObjectList(IDataReader reader) + { + List result = new List(); + if (reader != null && !reader.IsClosed) + { + while (reader.Read()) + { + result.Add(DataReaderToExpandoObject(reader)); + } + } + return result; + } + /// ///DataReader to DataReaderToDictionary /// @@ -145,7 +163,7 @@ namespace SqlSugar } } return result; - } + } #endregion #region Serialize @@ -189,7 +207,7 @@ namespace SqlSugar var jsonString = SerializeObject(sourceObject); return DeserializeObject(jsonString); } - } + } #endregion #region DataTable @@ -208,7 +226,7 @@ namespace SqlSugar } return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(deserializeObject)); - } + } #endregion #region Cache @@ -230,9 +248,9 @@ namespace SqlSugar public void RemoveCache(string key) { CacheManager.GetInstance().Remove(key); - } + } #endregion - + } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Entities/SugarDynamic.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Entities/SugarDynamic.cs deleted file mode 100644 index 9ed9cd4a8..000000000 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Entities/SugarDynamic.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SqlSugar -{ - public class SugarDynamic - { - - } -} \ No newline at end of file diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs index 4c2407b99..6f8f632e7 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs @@ -154,15 +154,6 @@ namespace SqlSugar get; set; } - ///// - ///// 如果类库是.NET 4.5请删除该属性 - ///// If the SqlSugar library is.NET 4.5, delete the property - ///// - //public override DataRowVersion SourceVersion - //{ - // get; set; - //} - public override void ResetDbType() { this.DbType = System.Data.DbType.String; diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index ec806ac68..bafbec3ac 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -17,7 +17,26 @@ namespace SqlSugar var isValue = expression.Member.Name == "Value" && expression.Member.DeclaringType.Name == "Nullable`1"; var isBool = expression.Type == PubConst.BoolType; var isValueBool = isValue && isBool && parameter.BaseExpression == null; - if (isValueBool) + var isLength = expression.Member.Name == "Length" && (expression.Expression as MemberExpression).Type == PubConst.StringType; + if (isLength) + { + var oldCommonTempDate = parameter.CommonTempData; + parameter.CommonTempData = CommonTempDataType.Result; + this.Expression = expression.Expression; + var isConst=this.Expression is ConstantExpression; + this.Start(); + var methodParamter = new MethodCallExpressionArgs() { IsMember = !isConst, MemberName = parameter.CommonTempData, MemberValue = null }; + var result = this.Context.DbMehtods.Length(new MethodCallExpressionModel() + { + Args = new List() { + methodParamter + } + }); + base.AppendMember(parameter, isLeft, result); + parameter.CommonTempData = oldCommonTempDate; + return; + } + else if (isValueBool) { isValue = false; } @@ -69,14 +88,14 @@ namespace SqlSugar var isSingle = parameter.Context.ResolveType == ResolveExpressType.WhereSingle; if (isSetTempData) { - fieldName = GetName(parameter, expression, null,isSingle); + fieldName = GetName(parameter, expression, null, isSingle); baseParameter.CommonTempData = fieldName; } else { if (isValueBool) { - fieldName = GetName(parameter, expression.Expression as MemberExpression, isLeft,isSingle); + fieldName = GetName(parameter, expression.Expression as MemberExpression, isLeft, isSingle); } else if (ExpressionTool.IsConstExpression(expression)) { @@ -86,7 +105,7 @@ namespace SqlSugar } else { - fieldName = GetName(parameter, expression, isLeft,isSingle); + fieldName = GetName(parameter, expression, isLeft, isSingle); } if (expression.Type == PubConst.BoolType && baseParameter.OperatorValue.IsNullOrEmpty()) { @@ -105,7 +124,7 @@ namespace SqlSugar break; case ResolveExpressType.ArrayMultiple: case ResolveExpressType.ArraySingle: - fieldName = GetName(parameter, expression, isLeft,parameter.Context.ResolveType== ResolveExpressType.ArraySingle); + fieldName = GetName(parameter, expression, isLeft, parameter.Context.ResolveType == ResolveExpressType.ArraySingle); base.Context.Result.Append(fieldName); break; default: @@ -147,7 +166,7 @@ namespace SqlSugar } else { - return GetMultipleName(parameter,expression,IsLeft); + return GetMultipleName(parameter, expression, IsLeft); } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Interface/IRewritableMethods.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Interface/IRewritableMethods.cs index 730711572..85e54911a 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Interface/IRewritableMethods.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Interface/IRewritableMethods.cs @@ -11,6 +11,7 @@ namespace SqlSugar public interface IRewritableMethods { ExpandoObject DataReaderToExpandoObject(IDataReader reader); + List DataReaderToExpandoObjectList(IDataReader reader); List DataReaderToDynamicList(IDataReader reader); string SerializeObject(object value); T DeserializeObject(string value); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs index c1b30aefc..6811ee7cd 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs @@ -5,10 +5,12 @@ using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. +[assembly: AssemblyTitle("SqlSugar4 Core")] +[assembly: AssemblyDescription("author sunkaixuan Apache Licence 2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SqlSugar")] -[assembly: AssemblyTrademark("")] +[assembly: AssemblyProduct("SqlSugar 4")] +[assembly: AssemblyCopyright("Copyright © 2016")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from @@ -17,5 +19,5 @@ using System.Runtime.InteropServices; // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("1c022a5c-4e4d-4026-a8a3-f659b9740a1a")] -[assembly: AssemblyVersion("4.2.1.8")] -[assembly: AssemblyFileVersion("4.2.1.8")] +[assembly: AssemblyVersion("4.2.2.3")] +[assembly: AssemblyFileVersion("4.2.2.3")] diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/MySqlProvider.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/MySqlProvider.cs index 5fbc0a717..978cd4190 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/MySqlProvider.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/MySqlProvider.cs @@ -34,7 +34,7 @@ namespace SqlSugar public override void BeginTran(string transactionName) { - ((MySqlConnection)this.Connection).BeginTransaction(); + base.BeginTran(); } /// /// Only SqlServer @@ -43,7 +43,7 @@ namespace SqlSugar /// public override void BeginTran(IsolationLevel iso, string transactionName) { - ((MySqlConnection)this.Connection).BeginTransaction(iso); + base.BeginTran(iso); } public override IDataAdapter GetAdapter() { diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs index 1e15b645c..85fb31477 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs @@ -57,7 +57,7 @@ namespace SqlSugar { updateTable.Append(SqlTemplateBatchUnion); } - updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.DbColumnName)))); + updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value),this.Builder.GetTranslationColumnName(it.DbColumnName))))); ++i; } pageIndex++; diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/SqlServer/SqlServerProvider.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/SqlServer/SqlServerProvider.cs index c8b752263..ace42ab1d 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/SqlServer/SqlServerProvider.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/SqlServer/SqlServerProvider.cs @@ -31,7 +31,8 @@ namespace SqlSugar /// public override void BeginTran(string transactionName) { - ((SqlConnection)this.Connection).BeginTransaction(transactionName); + CheckConnection(); + base.Transaction = ((SqlConnection)this.Connection).BeginTransaction(transactionName); } /// /// Only SqlServer @@ -40,7 +41,8 @@ namespace SqlSugar /// public override void BeginTran(IsolationLevel iso, string transactionName) { - ((SqlConnection)this.Connection).BeginTransaction(iso, transactionName); + CheckConnection(); + base.Transaction = ((SqlConnection)this.Connection).BeginTransaction(iso, transactionName); } public override IDataAdapter GetAdapter() { @@ -89,7 +91,8 @@ namespace SqlSugar sqlParameter.DbType = parameter.DbType; sqlParameter.Direction = parameter.Direction; result[index] = sqlParameter; - if (sqlParameter.Direction == ParameterDirection.Output) { + if (sqlParameter.Direction == ParameterDirection.Output) + { if (this.OutputParameters == null) this.OutputParameters = new List(); this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs index 6bb547d2f..270565aad 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs @@ -34,8 +34,12 @@ namespace SqlSugar new KeyValuePair("int",CSharpDataType.@int), new KeyValuePair("int32",CSharpDataType.@int), new KeyValuePair("integer32",CSharpDataType.@int), + new KeyValuePair("number",CSharpDataType.@int), new KeyValuePair("varchar",CSharpDataType.@string), + new KeyValuePair("varchar2",CSharpDataType.@string), + new KeyValuePair("nvarchar",CSharpDataType.@string), + new KeyValuePair("nvarchar2",CSharpDataType.@string), new KeyValuePair("text",CSharpDataType.@string), new KeyValuePair("char",CSharpDataType.@string), new KeyValuePair("num",CSharpDataType.@string), diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarAccessory.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarAccessory.cs index 86e24178a..43bd56900 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarAccessory.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarAccessory.cs @@ -68,7 +68,11 @@ namespace SqlSugar } protected void InitMppingInfo() { - string cacheKey = "Context.InitAttributeMappingTables" + typeof(T).FullName; + InitMppingInfo(typeof(T)); + } + public void InitMppingInfo(Type type) + { + string cacheKey = "Context.InitAttributeMappingTables" + type.FullName; var entityInfo = this.Context.RewritableMethods.GetCacheInstance().Func(cacheKey, (cm, key) => { @@ -77,7 +81,7 @@ namespace SqlSugar }, (cm, key) => { - var reval = this.Context.EntityProvider.GetEntityInfo(); + var reval = this.Context.EntityProvider.GetEntityInfo(type); return reval; }); InitMppingInfo(entityInfo); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarClient.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarClient.cs index 1c17a7891..e1c429c38 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarClient.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Dynamic; using System.Linq; using System.Linq.Expressions; using System.Text; @@ -98,9 +99,9 @@ namespace SqlSugar /// /// Lambda Query operation /// - public virtual ISugarQueryable Queryable(string tableName, string shortName) + public virtual ISugarQueryable Queryable(string tableName, string shortName) { - var queryable = Queryable(); + var queryable = Queryable(); queryable.SqlBuilder.QueryBuilder.EntityName = tableName; queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; @@ -263,6 +264,7 @@ namespace SqlSugar } public virtual IInsertable Insertable(Dictionary columnDictionary) where T : class, new() { + InitMppingInfo(); Check.Exception(columnDictionary == null || columnDictionary.Count == 0, "Insertable.columnDictionary can't be null"); var insertObject = this.RewritableMethods.DeserializeObject(this.RewritableMethods.SerializeObject(columnDictionary)); var columns = columnDictionary.Select(it => it.Key).ToList(); @@ -270,6 +272,7 @@ namespace SqlSugar } public virtual IInsertable Insertable(dynamic insertDynamicObject) where T : class, new() { + InitMppingInfo(); if (insertDynamicObject is T) { return this.Insertable((T)insertDynamicObject); @@ -293,26 +296,32 @@ namespace SqlSugar } public virtual IDeleteable Deleteable(Expression> expression) where T : class, new() { + InitMppingInfo(); return this.Deleteable().Where(expression); } public virtual IDeleteable Deleteable(dynamic primaryKeyValue) where T : class, new() { + InitMppingInfo(); return this.Deleteable().In(primaryKeyValue); } public virtual IDeleteable Deleteable(dynamic[] primaryKeyValues) where T : class, new() { + InitMppingInfo(); return this.Deleteable().In(primaryKeyValues); } public virtual IDeleteable Deleteable(List pkValue) where T : class, new() { + InitMppingInfo(); return this.Deleteable().In(pkValue); } public virtual IDeleteable Deleteable(T deleteObj) where T : class, new() { + InitMppingInfo(); return this.Deleteable().Where(deleteObj); } public virtual IDeleteable Deleteable(List deleteObjs) where T : class, new() { + InitMppingInfo(); return this.Deleteable().Where(deleteObjs); } #endregion @@ -339,6 +348,7 @@ namespace SqlSugar } public virtual IUpdateable Updateable(Dictionary columnDictionary) where T : class, new() { + InitMppingInfo(); Check.Exception(columnDictionary == null || columnDictionary.Count == 0, "Updateable.columnDictionary can't be null"); var updateObject = this.RewritableMethods.DeserializeObject(this.RewritableMethods.SerializeObject(columnDictionary)); var columns = columnDictionary.Select(it => it.Key).ToList(); @@ -346,6 +356,7 @@ namespace SqlSugar } public virtual IUpdateable Updateable(dynamic updateDynamicObject) where T : class, new() { + InitMppingInfo(); if (updateDynamicObject is T) { return this.Updateable((T)updateDynamicObject); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec index def4f1215..9ea564506 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec @@ -26,6 +26,6 @@ - + \ No newline at end of file diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Config.cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Config.cs index e3e5dc128..e30d5a58f 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Config.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Config.cs @@ -8,6 +8,6 @@ namespace OrmTest { public class Config { - public static string ConnectionString = @"DataSource=D:\MyGit\SqlSugar\Src\Asp.NetCore\SqlServerTest\src\SqliteTest\DataBase\SqlSugar4xTest.sqlite"; + public static string ConnectionString = @"DataSource=F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\Src\Asp.NetCore\SqlServerTest\src\SqliteTest\DataBase\SqlSugar4xTest.sqlite"; } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Mapping .cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Mapping .cs index 8b86e25e7..41135afad 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Mapping .cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Mapping .cs @@ -32,7 +32,7 @@ namespace OrmTest.UnitTest .GroupBy(st => st.Id) .GroupBy((st,sc) => sc.Id).OrderBy(st => st.Id,OrderByType.Asc) .Select((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql(); - base.Check(@"SELECT `st`.`ID` AS `stid` , `sc`.`id` AS `scid` FROM `STudent` st Left JOIN School sc ON ( `st`.`SchoolId` = `sc`.`id` ) WHERE ( `st`.`ID` = @Id0 ) AND ( `sc`.`id` = @Id1 ) AND ( `sc`.`id` = `st`.`ID` )GROUP BY `st`.`ID`,`sc`.`id`ORDER BY `st`.`ID` ASC ", + base.Check(@"SELECT `st`.`ID` AS `stid` , `sc`.`id` AS `scid` FROM `STudent` st Left JOIN School sc ON ( `st`.`SchoolId` = `sc`.`id` ) WHERE ( `st`.`ID` = @Id0 ) AND ( `sc`.`id` = @Id1 ) AND ( `sc`.`id` = `st`.`ID` )GROUP BY `st`.`ID`,`sc`.`id` ORDER BY `st`.`ID` ASC ", null, t2.Key, null, " Mapping t2 error"); var x2 = GetInstance(); } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Query/SelectQuery.cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Query/SelectQuery.cs index 019647b9b..36d2dc736 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Query/SelectQuery.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Query/SelectQuery.cs @@ -50,7 +50,7 @@ namespace OrmTest.UnitTest var t1 = db.Queryable((st, sc) => new object[] { JoinType.Inner,st.Id==sc.Id }).GroupBy(st => st.Id).Having(st => SqlFunc.AggregateAvg(st.Id) == 1).Select(st => new { avgId = SqlFunc.AggregateAvg(st.Id) }).ToSql(); - base.Check("SELECT AVG(`st`.`ID`) AS `avgId` FROM `STudent` st Inner JOIN School sc ON ( `st`.`ID` = `sc`.`Id` ) GROUP BY `st`.`ID` HAVING (AVG(`st`.`ID`) = @Const0 ) ", + base.Check("SELECT AVG(`st`.`ID`) AS `avgId` FROM `STudent` st Inner JOIN School sc ON ( `st`.`ID` = `sc`.`Id` ) GROUP BY `st`.`ID` HAVING (AVG(`st`.`ID`) = @Const0 ) ", new List() { new SugarParameter("@Const0",1) }