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 ce80a3768..cfdef3de8 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -222,6 +222,10 @@ namespace SqlSugar method = isNullableType ? getConvertInt32 : getInt32; if (bindProperyTypeName.IsContainsIn("int64")) method = isNullableType ? getConvertInt64 : getInt64; + if (bindProperyTypeName.IsContainsIn("byte")) + method = isNullableType ? getConvertByte : getByte; + if (bindProperyTypeName.IsContainsIn("int16")) + method = isNullableType ? getConvertInt16 : getInt16; break; case CSharpDataType.@bool: if (bindProperyTypeName == "bool" || bindProperyTypeName == "boolean") diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ExpressionContext.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ExpressionContext.cs index 3babbc7dd..81a52dd17 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ExpressionContext.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ExpressionContext.cs @@ -179,6 +179,7 @@ namespace SqlSugar } public virtual string GetAsString(string asName, string fieldValue) { + if (fieldValue.Contains(".*")) return fieldValue; return string.Format(" {0} {1} {2} ", GetTranslationColumnName(fieldValue), "AS", GetTranslationColumnName(asName)); } @@ -189,6 +190,7 @@ namespace SqlSugar public virtual string GetAsString(string asName, string fieldValue, string fieldShortName) { + if (fieldValue.Contains(".*")) return fieldValue; return string.Format(" {0} {1} {2} ", GetTranslationColumnName(fieldShortName + "." + fieldValue), "AS", GetTranslationColumnName(asName)); } public virtual void Clear() diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs index 4f63df451..c765c70f0 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs @@ -6,7 +6,7 @@ using System.Text; using System.Threading.Tasks; namespace SqlSugar { - public partial class DefaultDbMethod : IDbMethods + public partial class DefaultDbMethod : IDbMethods { public virtual string IIF(MethodCallExpressionModel model) { @@ -273,7 +273,14 @@ namespace SqlSugar public string GuidNew() { - return "'"+Guid.NewGuid()+"' "; + return "'" + Guid.NewGuid() + "' "; + } + + public string GetSelfAndAutoFill(string shortName, bool isSingle) + { + if (isSingle) return "*"; + else + return string.Format("{0}.*", shortName); } } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs index 0e6cca3ce..4346f7896 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs @@ -47,6 +47,7 @@ namespace SqlSugar string AggregateMax(MethodCallExpressionModel model); string AggregateCount(MethodCallExpressionModel model); string MappingColumn(MethodCallExpressionModel model); + string GetSelfAndAutoFill(string shortName,bool isSingle); string True(); string False(); string GuidNew(); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs index df845d243..5f20b8b28 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs @@ -95,5 +95,12 @@ namespace SqlSugar public static TResult AggregateMax(TResult thisValue) { throw new NotSupportedException("This method is not supported by the current parameter"); } public static TResult AggregateCount(TResult thisValue) { throw new NotSupportedException("This method is not supported by the current parameter"); } public static TResult MappingColumn(TResult oldColumnName,string newColumnName) { throw new NotSupportedException("This method is not supported by the current parameter"); } + /// + ///Example: new NewT(){name=SqlFunc.GetSelfAndAutoFill(it)} Generated SQL it.* + /// + /// + /// + /// + public static TResult GetSelfAndAutoFill(TResult value) { throw new NotSupportedException("This method is not supported by the current parameter"); } } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 9d3f96af2..e79d3e92c 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -67,6 +67,7 @@ namespace SqlSugar { case ResolveExpressType.WhereSingle: case ResolveExpressType.WhereMultiple: + Check.Exception(name == "GetSelfAndAutoFill", "SqlFunc.GetSelfAndAutoFill can only be used in Select."); Where(parameter, isLeft, name, args, model); break; case ResolveExpressType.SelectSingle: @@ -111,21 +112,29 @@ namespace SqlSugar private void Select(ExpressionParameter parameter, bool? isLeft, string name, IEnumerable args, MethodCallExpressionModel model, List appendArgs = null) { - foreach (var item in args) + if (name == "GetSelfAndAutoFill") { - var isBinaryExpression = item is BinaryExpression || item is MethodCallExpression; - if (isBinaryExpression) - { - model.Args.Add(GetMethodCallArgs(parameter, item)); - } - else - { - Default(parameter, model, item); - } + var memberValue = (args.First() as MemberExpression).Expression.ToString(); + model.Args.Add(new MethodCallExpressionArgs() { MemberValue= memberValue, IsMember=true, MemberName= memberValue }); } - if (appendArgs != null) + else { - model.Args.AddRange(appendArgs); + foreach (var item in args) + { + var isBinaryExpression = item is BinaryExpression || item is MethodCallExpression; + if (isBinaryExpression) + { + model.Args.Add(GetMethodCallArgs(parameter, item)); + } + else + { + Default(parameter, model, item); + } + } + if (appendArgs != null) + { + model.Args.AddRange(appendArgs); + } } parameter.BaseParameter.CommonTempData = GetMdthodValue(name, model); } @@ -269,6 +278,9 @@ namespace SqlSugar Check.Exception(!isValid, "SqlFunc.MappingColumn parameters error, The property name on the left, string value on the right"); this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[1].MemberName.ObjToString()); return mappingColumnResult; + case "GetSelfAndAutoFill": + this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[0].MemberName.ObjToString()); + return this.Context.DbMehtods.GetSelfAndAutoFill(model.Args[0].MemberValue.ObjToString(),this.Context.IsSingle); default: break; } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs index 9fec818ba..da06c2d52 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Properties/AssemblyInfo.cs @@ -17,5 +17,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.0.9")] -[assembly: AssemblyFileVersion("4.2.0.9")] +[assembly: AssemblyVersion("4.2.1")] +[assembly: AssemblyFileVersion("4.2.1")] diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec index 42e8a2bac..caaf97fef 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/SqlSugarForCore.nuspec @@ -2,7 +2,7 @@ sqlSugarCore - 4.2.0.9 + 4.2.1 sunkaixuan Landa http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Config.cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Config.cs index e30d5a58f..e3e5dc128 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=F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\Src\Asp.NetCore\SqlServerTest\src\SqliteTest\DataBase\SqlSugar4xTest.sqlite"; + public static string ConnectionString = @"DataSource=D:\MyGit\SqlSugar\Src\Asp.NetCore\SqlServerTest\src\SqliteTest\DataBase\SqlSugar4xTest.sqlite"; } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 40e85bed9..ee99c4227 100644 Binary files a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ