diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..b06e864a3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,212 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +#*.pubxml + +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# LightSwitch generated files +GeneratedArtifacts/ +_Pvt_Extensions/ +ModelManifest.xml diff --git a/.vs/SqlSugar/v14/.suo b/.vs/SqlSugar/v14/.suo index 7fdc2b475..773e4eaf8 100644 Binary files a/.vs/SqlSugar/v14/.suo and b/.vs/SqlSugar/v14/.suo differ diff --git a/OrmTest/bin/Debug/OrmTest.exe b/OrmTest/bin/Debug/OrmTest.exe index c5d9dd40c..03231cd2d 100644 Binary files a/OrmTest/bin/Debug/OrmTest.exe and b/OrmTest/bin/Debug/OrmTest.exe differ diff --git a/OrmTest/bin/Debug/OrmTest.pdb b/OrmTest/bin/Debug/OrmTest.pdb index 420ab1fbb..6b8fb5949 100644 Binary files a/OrmTest/bin/Debug/OrmTest.pdb and b/OrmTest/bin/Debug/OrmTest.pdb differ diff --git a/OrmTest/bin/Debug/SqlSugar.dll b/OrmTest/bin/Debug/SqlSugar.dll index a34e7ab6b..ae41822ec 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.dll and b/OrmTest/bin/Debug/SqlSugar.dll differ diff --git a/OrmTest/bin/Debug/SqlSugar.pdb b/OrmTest/bin/Debug/SqlSugar.pdb index e94d0c007..105ae1252 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.pdb and b/OrmTest/bin/Debug/SqlSugar.pdb differ diff --git a/OrmTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/OrmTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 297595fc7..000000000 Binary files a/OrmTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/OrmTest/obj/Debug/OrmTest.csproj.FileListAbsolute.txt b/OrmTest/obj/Debug/OrmTest.csproj.FileListAbsolute.txt deleted file mode 100644 index 8f49d2495..000000000 --- a/OrmTest/obj/Debug/OrmTest.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,9 +0,0 @@ -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\bin\Debug\OrmTest.exe.config -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\bin\Debug\OrmTest.exe -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\bin\Debug\OrmTest.pdb -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\bin\Debug\SqlSugar.dll -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\bin\Debug\Newtonsoft.Json.dll -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\bin\Debug\SqlSugar.pdb -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\obj\Debug\OrmTest.csprojResolveAssemblyReference.cache -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\obj\Debug\OrmTest.exe -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\OrmTest\obj\Debug\OrmTest.pdb diff --git a/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache b/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache deleted file mode 100644 index 89d6d076c..000000000 Binary files a/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache and /dev/null differ diff --git a/OrmTest/obj/Debug/OrmTest.exe b/OrmTest/obj/Debug/OrmTest.exe deleted file mode 100644 index c5d9dd40c..000000000 Binary files a/OrmTest/obj/Debug/OrmTest.exe and /dev/null differ diff --git a/OrmTest/obj/Debug/OrmTest.pdb b/OrmTest/obj/Debug/OrmTest.pdb deleted file mode 100644 index 420ab1fbb..000000000 Binary files a/OrmTest/obj/Debug/OrmTest.pdb and /dev/null differ diff --git a/OrmTest/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/OrmTest/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs deleted file mode 100644 index e69de29bb..000000000 diff --git a/OrmTest/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/OrmTest/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs deleted file mode 100644 index e69de29bb..000000000 diff --git a/OrmTest/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/OrmTest/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs deleted file mode 100644 index e69de29bb..000000000 diff --git a/SqlSugar/ExpressionsToSql/Common/ExpressionParameter.cs b/SqlSugar/ExpressionsToSql/Common/ExpressionParameter.cs index f73c58c5d..e8c077242 100644 --- a/SqlSugar/ExpressionsToSql/Common/ExpressionParameter.cs +++ b/SqlSugar/ExpressionsToSql/Common/ExpressionParameter.cs @@ -17,5 +17,13 @@ namespace SqlSugar public object CommonTempData { get; set; } public List> BinaryTempData { get; set; } public ExpressionResultAppendType AppendType { get; set; } + public void IsAppendResult() + { + this.AppendType = ExpressionResultAppendType.AppendResult; + } + public void IsAppendTempDate() + { + this.AppendType = ExpressionResultAppendType.AppendTempDate; + } } } diff --git a/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs b/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs index 255ab7bcd..d475cb53d 100644 --- a/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs +++ b/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs @@ -7,7 +7,21 @@ namespace SqlSugar { public class ExpressionResult { - public ExpressionParameter CurrentParameter { get; set; } + public bool IsLockCurrentParameter { get; set; } + private ExpressionParameter _CurrentParameter; + public ExpressionParameter CurrentParameter + { + get + { + return this._CurrentParameter; + } + set + { + Check.Exception(value!=null&&IsLockCurrentParameter, "CurrentParameter is locked."); + this._CurrentParameter = value; + this.IsLockCurrentParameter = false; + } + } #region constructor private ExpressionResult() { @@ -58,7 +72,8 @@ namespace SqlSugar public void Append(object parameter) { - if (this.CurrentParameter.IsValuable() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate)) { + if (this.CurrentParameter.IsValuable() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate)) + { this.CurrentParameter.CommonTempData = parameter; return; } @@ -86,7 +101,7 @@ namespace SqlSugar { if (this.CurrentParameter.IsValuable() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate)) { - this.CurrentParameter.CommonTempData = new KeyValuePair(parameter,orgs); + this.CurrentParameter.CommonTempData = new KeyValuePair(parameter, orgs); return; } switch (this._ResolveExpressType) diff --git a/SqlSugar/ExpressionsToSql/ExpressionContext.cs b/SqlSugar/ExpressionsToSql/ExpressionContext.cs index 97a2a1b17..4e3437e8b 100644 --- a/SqlSugar/ExpressionsToSql/ExpressionContext.cs +++ b/SqlSugar/ExpressionsToSql/ExpressionContext.cs @@ -68,7 +68,7 @@ namespace SqlSugar } #endregion - #region functions + #region public functions public virtual string GetaMppingColumnsName(string name) { return name; @@ -78,6 +78,10 @@ namespace SqlSugar BaseResolve resolve = new BaseResolve(new ExpressionParameter() { Expression = this.Expression, Context = this }); resolve.Start(); } + public virtual string GetAsString(string fieldName, string fieldValue) + { + return string.Format(" {0} {1} {2} ", fieldValue, "AS", fieldName); + } #endregion } } diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs index 00385e83a..e6ec7e379 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs @@ -12,8 +12,6 @@ namespace SqlSugar if (parameter.BaseParameter.CommonTempData != null && parameter.BaseParameter.CommonTempData.Equals("simple")) { parameter.BaseParameter = parameter; - parameter.AppendType = ExpressionResultAppendType.AppendTempDate; - this.Context.Result.CurrentParameter = parameter; new SimpleBinaryExpressionResolve(parameter); this.Context.Result.CurrentParameter = null; } diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs index 69a49946a..1756f10dd 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs @@ -40,26 +40,45 @@ namespace SqlSugar int i = 0; foreach (var item in expression.Arguments) { + string memberName = expression.Members[i].Name; ++i; if (item.NodeType == ExpressionType.Constant || (item is MemberExpression) && ((MemberExpression)item).Expression.NodeType == ExpressionType.Constant) { base.Expression = item; base.Start(); string parameterName = this.Context.SqlParameterKeyWord + "constant" + i; - parameter.Context.Result.Append(parameterName); + parameter.Context.Result.Append(base.Context.GetAsString(memberName,parameterName)); this.Context.Parameters.Add(new SugarParameter(parameterName, parameter.CommonTempData)); } else if (item is MemberExpression) { - base.Expression = item; - base.Start(); + if (base.Context.Result.IsLockCurrentParameter == false) + { + base.Context.Result.CurrentParameter = parameter; + base.Context.Result.IsLockCurrentParameter = true; + parameter.IsAppendTempDate(); + base.Expression = item; + base.Start(); + parameter.IsAppendResult(); + base.Context.Result.Append(base.Context.GetAsString(memberName,parameter.CommonTempData.ObjToString())); + base.Context.Result.CurrentParameter = null; + } } else if (item is BinaryExpression) { - base.Expression = item; - parameter.CommonTempData = "simple"; - base.Start(); - parameter.CommonTempData =null; + if (base.Context.Result.IsLockCurrentParameter == false) + { + base.Context.Result.CurrentParameter = parameter; + base.Context.Result.IsLockCurrentParameter = true; + parameter.IsAppendTempDate(); + base.Expression = item; + parameter.CommonTempData = "simple"; + base.Start(); + parameter.CommonTempData = null; + parameter.IsAppendResult(); + base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString())); + base.Context.Result.CurrentParameter = null; + } } else { diff --git a/SqlSugar/bin/Debug/Newtonsoft.Json.dll b/SqlSugar/bin/Debug/Newtonsoft.Json.dll deleted file mode 100644 index 20dae627a..000000000 Binary files a/SqlSugar/bin/Debug/Newtonsoft.Json.dll and /dev/null differ diff --git a/SqlSugar/bin/Debug/SqlSugar.dll b/SqlSugar/bin/Debug/SqlSugar.dll deleted file mode 100644 index a34e7ab6b..000000000 Binary files a/SqlSugar/bin/Debug/SqlSugar.dll and /dev/null differ diff --git a/SqlSugar/bin/Debug/SqlSugar.pdb b/SqlSugar/bin/Debug/SqlSugar.pdb deleted file mode 100644 index e94d0c007..000000000 Binary files a/SqlSugar/bin/Debug/SqlSugar.pdb and /dev/null differ diff --git a/SqlSugar/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SqlSugar/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index e6aa33436..000000000 Binary files a/SqlSugar/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt b/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt deleted file mode 100644 index c7414cb31..000000000 --- a/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,5 +0,0 @@ -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\SqlSugar.dll -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\SqlSugar.pdb -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\Newtonsoft.Json.dll -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.dll -F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.pdb diff --git a/SqlSugar/obj/Debug/SqlSugar.dll b/SqlSugar/obj/Debug/SqlSugar.dll deleted file mode 100644 index a34e7ab6b..000000000 Binary files a/SqlSugar/obj/Debug/SqlSugar.dll and /dev/null differ diff --git a/SqlSugar/obj/Debug/SqlSugar.pdb b/SqlSugar/obj/Debug/SqlSugar.pdb deleted file mode 100644 index e94d0c007..000000000 Binary files a/SqlSugar/obj/Debug/SqlSugar.pdb and /dev/null differ diff --git a/SqlSugar/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/SqlSugar/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs deleted file mode 100644 index e69de29bb..000000000 diff --git a/SqlSugar/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/SqlSugar/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs deleted file mode 100644 index e69de29bb..000000000 diff --git a/SqlSugar/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/SqlSugar/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs deleted file mode 100644 index e69de29bb..000000000