- 修复 UseGenerateCommandParameterWithLambda(true) 问题;#1173 #900

This commit is contained in:
2881099 2022-06-29 15:31:03 +08:00
parent fa9f995c9f
commit 81406ba37a
22 changed files with 132 additions and 75 deletions

View File

@ -418,6 +418,42 @@ namespace base_entity
} }
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("id", 1);
dic.Add("name", "xxxx");
var diclist = new List<Dictionary<string, object>>();
diclist.Add(dic);
diclist.Add(new Dictionary<string, object>
{
["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<string, object>
{
["id"] = 1
});
diclist.Add(new Dictionary<string, object>
{
["id"] = 2
});
var sqldel4 = fsql.DeleteDict(diclist).AsTable("table1").ToSql();
var sql1 = fsql.Select<User1, UserGroup>() var sql1 = fsql.Select<User1, UserGroup>()
.RawJoin("FULL JOIN UserGroup b ON b.id = a.GroupId") .RawJoin("FULL JOIN UserGroup b ON b.id = a.GroupId")
.Where((a, b) => a.IsDeleted == false) .Where((a, b) => a.IsDeleted == false)
@ -748,41 +784,7 @@ namespace base_entity
}); });
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("id", 1);
dic.Add("name", "xxxx");
var diclist = new List<Dictionary<string, object>>();
diclist.Add(dic);
diclist.Add(new Dictionary<string, object>
{
["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<string, object>
{
["id"] = 1
});
diclist.Add(new Dictionary<string, object>
{
["id"] = 2
});
var sqldel4 = fsql.DeleteDict(diclist).AsTable("table1").ToSql();
for (var a = 0; a < 10000; a++) for (var a = 0; a < 10000; a++)

View File

@ -1,6 +1,7 @@
using FreeSql.DataAnnotations; using FreeSql.DataAnnotations;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using Xunit; 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(); 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<TableAllType>().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<int> testlinqlist = new List<int>(new[] { 1, 2, 3 });
var testlinq = fsql.Select<TableAllType>().Where(a => testlinqlist.Contains(a.Int)).ToList();
var testlinq2list = new string[] { };
var testlinq2 = g.sqlite.Delete<TableAllType>().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<TableAllType>().Where(a => new[] { 1, 2, 3 }.Contains(a.Int)).ToList();
var sql112 = fsql.Select<TableAllType>().Where(a => new[] { 1, 2, 3 }.Contains(a.Int) == false).ToList();
var sql113 = fsql.Select<TableAllType>().Where(a => !new[] { 1, 2, 3 }.Contains(a.Int)).ToList();
var inarray = new[] { 1, 2, 3 };
var sql1111 = fsql.Select<TableAllType>().Where(a => inarray.Contains(a.Int)).ToList();
var sql1122 = fsql.Select<TableAllType>().Where(a => inarray.Contains(a.Int) == false).ToList();
var sql1133 = fsql.Select<TableAllType>().Where(a => !inarray.Contains(a.Int)).ToList();
//in not in
var sql11111 = fsql.Select<TableAllType>().Where(a => new List<int>() { 1, 2, 3 }.Contains(a.Int)).ToList();
var sql11222 = fsql.Select<TableAllType>().Where(a => new List<int>() { 1, 2, 3 }.Contains(a.Int) == false).ToList();
var sql11333 = fsql.Select<TableAllType>().Where(a => !new List<int>() { 1, 2, 3 }.Contains(a.Int)).ToList();
var sql11111a = fsql.Select<TableAllType>().Where(a => new List<int>(new[] { 1, 2, 3 }).Contains(a.Int)).ToList();
var sql11222b = fsql.Select<TableAllType>().Where(a => new List<int>(new[] { 1, 2, 3 }).Contains(a.Int) == false).ToList();
var sql11333c = fsql.Select<TableAllType>().Where(a => !new List<int>(new[] { 1, 2, 3 }).Contains(a.Int)).ToList();
var inarray2 = new List<int>() { 1, 2, 3 };
var sql111111 = fsql.Select<TableAllType>().Where(a => inarray.Contains(a.Int)).ToList();
var sql112222 = fsql.Select<TableAllType>().Where(a => inarray.Contains(a.Int) == false).ToList();
var sql113333 = fsql.Select<TableAllType>().Where(a => !inarray.Contains(a.Int)).ToList();
var inarray2n = Enumerable.Range(1, 3333).ToArray();
var sql1111111 = fsql.Select<TableAllType>().Where(a => inarray2n.Contains(a.Int)).ToList();
var sql1122222 = fsql.Select<TableAllType>().Where(a => inarray2n.Contains(a.Int) == false).ToList();
var sql1133333 = fsql.Select<TableAllType>().Where(a => !inarray2n.Contains(a.Int)).ToList();
}
}
[Table(Name = "tb_alltype")] [Table(Name = "tb_alltype")]
class TableAllType class TableAllType
{ {

View File

@ -120,12 +120,12 @@ namespace FreeSql.ClickHouse
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -122,12 +122,12 @@ namespace FreeSql.Custom
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -122,12 +122,12 @@ namespace FreeSql.Dameng
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -109,12 +109,12 @@ namespace FreeSql.Firebird
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -109,12 +109,12 @@ namespace FreeSql.GBase
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -146,12 +146,12 @@ namespace FreeSql.KingbaseES
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
left = objExp == null ? null : getExp(objExp); left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
//判断 in 或 array @> array //判断 in 或 array @> array
if (left.StartsWith("array[") || left.EndsWith("]")) if (left.StartsWith("array[") || left.EndsWith("]"))
return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; return $"({args1}) in ({left.Substring(6, left.Length - 7)})";

View File

@ -92,12 +92,12 @@ namespace FreeSql.MsAccess
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -120,12 +120,12 @@ namespace FreeSql.MySql
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -122,12 +122,12 @@ namespace FreeSql.Odbc.Dameng
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -122,12 +122,12 @@ namespace FreeSql.Odbc.Default
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -146,12 +146,12 @@ namespace FreeSql.Odbc.KingbaseES
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
left = objExp == null ? null : getExp(objExp); left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
//判断 in 或 array @> array //判断 in 或 array @> array
if (left.StartsWith("array[") || left.EndsWith("]")) if (left.StartsWith("array[") || left.EndsWith("]"))
return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; return $"({args1}) in ({left.Substring(6, left.Length - 7)})";

View File

@ -118,12 +118,12 @@ namespace FreeSql.Odbc.MySql
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -122,12 +122,12 @@ namespace FreeSql.Odbc.Oracle
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -146,12 +146,12 @@ namespace FreeSql.Odbc.PostgreSQL
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
left = objExp == null ? null : getExp(objExp); left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
//判断 in 或 array @> array //判断 in 或 array @> array
if (left.StartsWith("array[") || left.EndsWith("]")) if (left.StartsWith("array[") || left.EndsWith("]"))
return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; return $"({args1}) in ({left.Substring(6, left.Length - 7)})";

View File

@ -128,12 +128,12 @@ namespace FreeSql.Odbc.SqlServer
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -122,12 +122,12 @@ namespace FreeSql.Oracle
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -177,12 +177,12 @@ namespace FreeSql.PostgreSQL
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
left = objExp == null ? null : getExp(objExp); left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
//判断 in 或 array @> array //判断 in 或 array @> array
if (left.StartsWith("array[") || left.EndsWith("]")) if (left.StartsWith("array[") || left.EndsWith("]"))
return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; return $"({args1}) in ({left.Substring(6, left.Length - 7)})";

View File

@ -128,12 +128,12 @@ namespace FreeSql.ShenTong
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
left = objExp == null ? null : getExp(objExp); left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
//判断 in 或 array @> array //判断 in 或 array @> array
if (left.StartsWith("array[") || left.EndsWith("]")) if (left.StartsWith("array[") || left.EndsWith("]"))
return $"({args1}) in ({left.Substring(6, left.Length - 7)})"; return $"({args1}) in ({left.Substring(6, left.Length - 7)})";

View File

@ -127,12 +127,12 @@ namespace FreeSql.SqlServer
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":

View File

@ -118,12 +118,12 @@ namespace FreeSql.Sqlite
tsc.SetMapColumnTmp(null); tsc.SetMapColumnTmp(null);
var args1 = getExp(callExp.Arguments[argIndex]); var args1 = getExp(callExp.Arguments[argIndex]);
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp); 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; tsc.isNotSetMapColumnTmp = true;
var left = objExp == null ? null : getExp(objExp); var left = objExp == null ? null : getExp(objExp);
tsc.isNotSetMapColumnTmp = false; tsc.isNotSetMapColumnTmp = false;
tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType); tsc.SetMapColumnTmp(null).SetMapTypeReturnOld(oldMapType);
//tsc.SetDbParamsReturnOld(oldDbParams); if (oldDbParams != null) tsc.SetDbParamsReturnOld(oldDbParams);
switch (callExp.Method.Name) switch (callExp.Method.Name)
{ {
case "Contains": case "Contains":