diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index ae9c00ce..c88e7856 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -418,6 +418,42 @@ namespace base_entity } + Dictionary dic = new Dictionary(); + dic.Add("id", 1); + dic.Add("name", "xxxx"); + var diclist = new List>(); + diclist.Add(dic); + diclist.Add(new Dictionary + { + ["id"] = 2, + ["name"] = "123,1234,123444" + }); + + var sqss = fsql.InsertDict(dic).AsTable("table1").ToSql(); + var sqss2 = fsql.InsertDict(diclist).AsTable("table1").ToSql(); + sqss = fsql.InsertDict(dic).AsTable("table1").NoneParameter(false).ToSql(); + sqss2 = fsql.InsertDict(diclist).AsTable("table1").NoneParameter(false).ToSql(); + + var sqlupd1 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").ToSql(); + var sqlupd2 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").ToSql(); + var sqlupd11 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").NoneParameter(false).ToSql(); + var sqlupd22 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").NoneParameter(false).ToSql(); + + var sqldel1 = fsql.DeleteDict(dic).AsTable("table1").ToSql(); + var sqldel2 = fsql.DeleteDict(diclist).AsTable("table1").ToSql(); + diclist[1]["title"] = "newtitle"; + var sqldel3 = fsql.DeleteDict(diclist).AsTable("table1").ToSql(); + diclist.Clear(); + diclist.Add(new Dictionary + { + ["id"] = 1 + }); + diclist.Add(new Dictionary + { + ["id"] = 2 + }); + var sqldel4 = fsql.DeleteDict(diclist).AsTable("table1").ToSql(); + var sql1 = fsql.Select() .RawJoin("FULL JOIN UserGroup b ON b.id = a.GroupId") .Where((a, b) => a.IsDeleted == false) @@ -748,41 +784,7 @@ namespace base_entity }); - Dictionary dic = new Dictionary(); - dic.Add("id", 1); - dic.Add("name", "xxxx"); - var diclist = new List>(); - diclist.Add(dic); - diclist.Add(new Dictionary - { - ["id"] = 2, - ["name"] = "yyyy" - }); - - var sqss = fsql.InsertDict(dic).AsTable("table1").ToSql(); - var sqss2 = fsql.InsertDict(diclist).AsTable("table1").ToSql(); - sqss = fsql.InsertDict(dic).AsTable("table1").NoneParameter(false).ToSql(); - sqss2 = fsql.InsertDict(diclist).AsTable("table1").NoneParameter(false).ToSql(); - - var sqlupd1 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").ToSql(); - var sqlupd2 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").ToSql(); - var sqlupd11 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").NoneParameter(false).ToSql(); - var sqlupd22 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").NoneParameter(false).ToSql(); - - var sqldel1 = fsql.DeleteDict(dic).AsTable("table1").ToSql(); - var sqldel2 = fsql.DeleteDict(diclist).AsTable("table1").ToSql(); - diclist[1]["title"] = "newtitle"; - var sqldel3 = fsql.DeleteDict(diclist).AsTable("table1").ToSql(); - diclist.Clear(); - diclist.Add(new Dictionary - { - ["id"] = 1 - }); - diclist.Add(new Dictionary - { - ["id"] = 2 - }); - var sqldel4 = fsql.DeleteDict(diclist).AsTable("table1").ToSql(); + for (var a = 0; a < 10000; a++) diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs index 101ab662..766288cd 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs @@ -1,6 +1,7 @@ using FreeSql.DataAnnotations; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using Xunit; @@ -180,6 +181,60 @@ WHERE (('name01' = a.""Name"" AND 1 = a.""Click"" OR a.""Click"" > 10) OR ('name var sql1133333 = select.Where(a => !inarray2n.Contains(a.Int)).ToList(); } + [Fact] + public void ArrayUseGenerateCommandParameterWithLambda() + { + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "data source=:memory:") + .UseGenerateCommandParameterWithLambda(true) + .UseAutoSyncStructure(true) + .UseMonitorCommand(null, (cmd, log) => Trace.WriteLine(log)) + .Build()) + { + var arr = new[] { 1L, 2L, 3L }.Select(x => x); + var ids = arr.Select(x => x); + var sql001 = fsql.Select().Where(x => ids.Contains(x.Id)).ToSql(); + Assert.Equal(@"SELECT a.""Id"", a.""id2"", a.""Bool"", a.""SByte"", a.""Short"", a.""Int"", a.""Long"", a.""Byte"", a.""UShort"", a.""UInt"", a.""ULong"", a.""Double"", a.""Float"", a.""Decimal"", a.""TimeSpan"", a.""DateTime"", a.""DateTimeOffSet"", a.""Bytes"", a.""String"", a.""Guid"", a.""BoolNullable"", a.""SByteNullable"", a.""ShortNullable"", a.""IntNullable"", a.""testFielLongNullable"", a.""ByteNullable"", a.""UShortNullable"", a.""UIntNullable"", a.""ULongNullable"", a.""DoubleNullable"", a.""FloatNullable"", a.""DecimalNullable"", a.""TimeSpanNullable"", a.""DateTimeNullable"", a.""DateTimeOffSetNullable"", a.""GuidNullable"", a.""Enum1"", a.""Enum1Nullable"", a.""Enum2"", a.""Enum2Nullable"" +FROM ""tb_alltype"" a +WHERE (((a.""Id"") in (1,2,3)))", sql001); + + IEnumerable testlinqlist = new List(new[] { 1, 2, 3 }); + var testlinq = fsql.Select().Where(a => testlinqlist.Contains(a.Int)).ToList(); + var testlinq2list = new string[] { }; + var testlinq2 = g.sqlite.Delete().Where(a => testlinq2list.Contains(a.String)).ToSql(); + Assert.Equal("DELETE FROM \"tb_alltype\" WHERE (((\"String\") in (NULL)))", testlinq2); + + //in not in + var sql111 = fsql.Select().Where(a => new[] { 1, 2, 3 }.Contains(a.Int)).ToList(); + var sql112 = fsql.Select().Where(a => new[] { 1, 2, 3 }.Contains(a.Int) == false).ToList(); + var sql113 = fsql.Select().Where(a => !new[] { 1, 2, 3 }.Contains(a.Int)).ToList(); + + var inarray = new[] { 1, 2, 3 }; + var sql1111 = fsql.Select().Where(a => inarray.Contains(a.Int)).ToList(); + var sql1122 = fsql.Select().Where(a => inarray.Contains(a.Int) == false).ToList(); + var sql1133 = fsql.Select().Where(a => !inarray.Contains(a.Int)).ToList(); + + //in not in + var sql11111 = fsql.Select().Where(a => new List() { 1, 2, 3 }.Contains(a.Int)).ToList(); + var sql11222 = fsql.Select().Where(a => new List() { 1, 2, 3 }.Contains(a.Int) == false).ToList(); + var sql11333 = fsql.Select().Where(a => !new List() { 1, 2, 3 }.Contains(a.Int)).ToList(); + + var sql11111a = fsql.Select().Where(a => new List(new[] { 1, 2, 3 }).Contains(a.Int)).ToList(); + var sql11222b = fsql.Select().Where(a => new List(new[] { 1, 2, 3 }).Contains(a.Int) == false).ToList(); + var sql11333c = fsql.Select().Where(a => !new List(new[] { 1, 2, 3 }).Contains(a.Int)).ToList(); + + var inarray2 = new List() { 1, 2, 3 }; + var sql111111 = fsql.Select().Where(a => inarray.Contains(a.Int)).ToList(); + var sql112222 = fsql.Select().Where(a => inarray.Contains(a.Int) == false).ToList(); + var sql113333 = fsql.Select().Where(a => !inarray.Contains(a.Int)).ToList(); + + var inarray2n = Enumerable.Range(1, 3333).ToArray(); + var sql1111111 = fsql.Select().Where(a => inarray2n.Contains(a.Int)).ToList(); + var sql1122222 = fsql.Select().Where(a => inarray2n.Contains(a.Int) == false).ToList(); + var sql1133333 = fsql.Select().Where(a => !inarray2n.Contains(a.Int)).ToList(); + } + } + [Table(Name = "tb_alltype")] class TableAllType { diff --git a/Providers/FreeSql.Provider.ClickHouse/ClickHouseExpression.cs b/Providers/FreeSql.Provider.ClickHouse/ClickHouseExpression.cs index 55335e94..ee71bd93 100644 --- a/Providers/FreeSql.Provider.ClickHouse/ClickHouseExpression.cs +++ b/Providers/FreeSql.Provider.ClickHouse/ClickHouseExpression.cs @@ -120,12 +120,12 @@ namespace FreeSql.ClickHouse tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Custom/CustomExpression.cs b/Providers/FreeSql.Provider.Custom/CustomExpression.cs index ba9c2eda..a3f5c1eb 100644 --- a/Providers/FreeSql.Provider.Custom/CustomExpression.cs +++ b/Providers/FreeSql.Provider.Custom/CustomExpression.cs @@ -122,12 +122,12 @@ namespace FreeSql.Custom tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Dameng/DamengExpression.cs b/Providers/FreeSql.Provider.Dameng/DamengExpression.cs index 1e95979d..c2be2bb6 100644 --- a/Providers/FreeSql.Provider.Dameng/DamengExpression.cs +++ b/Providers/FreeSql.Provider.Dameng/DamengExpression.cs @@ -122,12 +122,12 @@ namespace FreeSql.Dameng tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Firebird/FirebirdExpression.cs b/Providers/FreeSql.Provider.Firebird/FirebirdExpression.cs index 62eb7d34..3f9b3573 100644 --- a/Providers/FreeSql.Provider.Firebird/FirebirdExpression.cs +++ b/Providers/FreeSql.Provider.Firebird/FirebirdExpression.cs @@ -109,12 +109,12 @@ namespace FreeSql.Firebird tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.GBase/GBaseExpression.cs b/Providers/FreeSql.Provider.GBase/GBaseExpression.cs index ff33b7a5..23068076 100644 --- a/Providers/FreeSql.Provider.GBase/GBaseExpression.cs +++ b/Providers/FreeSql.Provider.GBase/GBaseExpression.cs @@ -109,12 +109,12 @@ namespace FreeSql.GBase tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs b/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs index 6af86a75..ff566853 100644 --- a/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs +++ b/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs @@ -146,12 +146,12 @@ namespace FreeSql.KingbaseES tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); //判断 in 或 array @> array if (left.StartsWith("array[") || left.EndsWith("]")) return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessExpression.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessExpression.cs index db6ae0a1..4b7624c5 100644 --- a/Providers/FreeSql.Provider.MsAccess/MsAccessExpression.cs +++ b/Providers/FreeSql.Provider.MsAccess/MsAccessExpression.cs @@ -92,12 +92,12 @@ namespace FreeSql.MsAccess tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.MySql/MySqlExpression.cs b/Providers/FreeSql.Provider.MySql/MySqlExpression.cs index 68bd56a8..01a2f7c1 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlExpression.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlExpression.cs @@ -120,12 +120,12 @@ namespace FreeSql.MySql tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengExpression.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengExpression.cs index 326b75ac..5a669589 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengExpression.cs @@ -122,12 +122,12 @@ namespace FreeSql.Odbc.Dameng tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcExpression.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcExpression.cs index b32281b8..67adbb3d 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/OdbcExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcExpression.cs @@ -122,12 +122,12 @@ namespace FreeSql.Odbc.Default tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs index 2cb35cf0..fda2afea 100644 --- a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs @@ -146,12 +146,12 @@ namespace FreeSql.Odbc.KingbaseES tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); //判断 in 或 array @> array if (left.StartsWith("array[") || left.EndsWith("]")) return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlExpression.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlExpression.cs index 5374a82f..25572732 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlExpression.cs @@ -118,12 +118,12 @@ namespace FreeSql.Odbc.MySql tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleExpression.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleExpression.cs index 809fbe60..3399c519 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleExpression.cs @@ -122,12 +122,12 @@ namespace FreeSql.Odbc.Oracle tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs index 3a6a1431..ba8af8db 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs @@ -146,12 +146,12 @@ namespace FreeSql.Odbc.PostgreSQL tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); //判断 in 或 array @> array if (left.StartsWith("array[") || left.EndsWith("]")) return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerExpression.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerExpression.cs index da6d86fb..1242eccf 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerExpression.cs @@ -128,12 +128,12 @@ namespace FreeSql.Odbc.SqlServer tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Oracle/OracleExpression.cs b/Providers/FreeSql.Provider.Oracle/OracleExpression.cs index dd8f0098..825e9f54 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleExpression.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleExpression.cs @@ -122,12 +122,12 @@ namespace FreeSql.Oracle tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs index 4f7f7755..ca3adb2c 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs @@ -177,12 +177,12 @@ namespace FreeSql.PostgreSQL tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); //判断 in 或 array @> array if (left.StartsWith("array[") || left.EndsWith("]")) return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; diff --git a/Providers/FreeSql.Provider.ShenTong/ShenTongExpression.cs b/Providers/FreeSql.Provider.ShenTong/ShenTongExpression.cs index 59a80167..ed6864ff 100644 --- a/Providers/FreeSql.Provider.ShenTong/ShenTongExpression.cs +++ b/Providers/FreeSql.Provider.ShenTong/ShenTongExpression.cs @@ -128,12 +128,12 @@ namespace FreeSql.ShenTong tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); //判断 in 或 array @> array if (left.StartsWith("array[") || left.EndsWith("]")) return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerExpression.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerExpression.cs index dbe0a082..eaaa835c 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerExpression.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerExpression.cs @@ -127,12 +127,12 @@ namespace FreeSql.SqlServer tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains": diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs b/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs index 5f3743c2..9c227a34 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteExpression.cs @@ -118,12 +118,12 @@ namespace FreeSql.Sqlite tsc.SetMapColumnTmp(null); var args1 = getExp(callExp.Arguments[argIndex]); var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); - //var oldDbParams = tsc.SetDbParamsReturnOld(null); #900 UseGenerateCommandParameterWithLambda(true) 子查询 bug + var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug tsc.isNotSetMapColumnTmp = true; var left = objExp == null ? null : getExp(objExp); tsc.isNotSetMapColumnTmp = false; tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); - //tsc.SetDbParamsReturnOld(oldDbParams); + if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams); switch (callExp.Method.Name) { case "Contains":