mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-08-05 23:52:26 +08:00
- 增加 ICodeFirst.IsGenerateCommandParameterWithLambda 选项,开启表达式解析的命令参数化;
- 增加 ExpressionCallContext 自定义函数上下文档 DbParameter 属性; - 修复 IncludeMany(a => a.x1.x2.Childs) 当 x1, x2 为 null 的报 null 错误;
This commit is contained in:
@ -725,15 +725,15 @@ namespace FreeSql.Tests.Odbc.Default
|
||||
[Fact]
|
||||
public void Sum()
|
||||
{
|
||||
var subquery = select.ToSql(a => new
|
||||
var subquery = select.Where(a => a.Id < 200).ToSql(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Sum(b => b.Id)
|
||||
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
|
||||
});
|
||||
var subqueryList = select.ToList(a => new
|
||||
var subqueryList = select.Where(a => a.Id < 200).ToList(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Sum(b => b.Id)
|
||||
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
|
||||
});
|
||||
}
|
||||
[Fact]
|
||||
@ -767,15 +767,15 @@ namespace FreeSql.Tests.Odbc.Default
|
||||
[Fact]
|
||||
public void Avg()
|
||||
{
|
||||
var subquery = select.ToSql(a => new
|
||||
var subquery = select.Where(a => a.Id < 200).ToSql(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Avg(b => b.Id)
|
||||
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
|
||||
});
|
||||
var subqueryList = select.ToList(a => new
|
||||
var subqueryList = select.Where(a => a.Id < 200).ToList(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Avg(b => b.Id)
|
||||
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
|
||||
});
|
||||
}
|
||||
[Fact]
|
||||
|
@ -1567,30 +1567,5 @@ namespace FreeSql.Tests.Odbc.DefaultMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1100,30 +1100,5 @@ namespace FreeSql.Tests.Odbc.DefaultMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1567,30 +1567,5 @@ namespace FreeSql.Tests.Odbc.OracleMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1101,30 +1101,5 @@ namespace FreeSql.Tests.Odbc.OracleMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1567,30 +1567,5 @@ namespace FreeSql.Tests.Odbc.PostgreSQLMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1101,30 +1101,5 @@ namespace FreeSql.Tests.Odbc.PostgreSQLMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -706,15 +706,15 @@ namespace FreeSql.Tests.Odbc.SqlServer
|
||||
[Fact]
|
||||
public void Sum()
|
||||
{
|
||||
var subquery = select.ToSql(a => new
|
||||
var subquery = select.Where(a => a.Id < 200).ToSql(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Sum(b => b.Id)
|
||||
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
|
||||
});
|
||||
var subqueryList = select.ToList(a => new
|
||||
var subqueryList = select.Where(a => a.Id < 200).ToList(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Sum(b => b.Id)
|
||||
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
|
||||
});
|
||||
}
|
||||
[Fact]
|
||||
@ -748,15 +748,15 @@ namespace FreeSql.Tests.Odbc.SqlServer
|
||||
[Fact]
|
||||
public void Avg()
|
||||
{
|
||||
var subquery = select.ToSql(a => new
|
||||
var subquery = select.Where(a => a.Id < 100).ToSql(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Avg(b => b.Id)
|
||||
count = select.Where(b => b.Id < 100).Avg(b => b.Id)
|
||||
});
|
||||
var subqueryList = select.ToList(a => new
|
||||
var subqueryList = select.Where(a => a.Id < 100).ToList(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Avg(b => b.Id)
|
||||
count = select.Where(b => b.Id < 100).Avg(b => b.Id)
|
||||
});
|
||||
}
|
||||
[Fact]
|
||||
|
@ -1568,30 +1568,5 @@ namespace FreeSql.Tests.Odbc.SqlServerMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1101,30 +1101,5 @@ namespace FreeSql.Tests.Odbc.SqlServerMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -204,6 +204,14 @@
|
||||
回复的文本内容
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSql.Tests.DbFunc.SetDbParameter(System.String,System.Int32)">
|
||||
<summary>
|
||||
设置表达式中的 string 参数化长度,优化执行计划
|
||||
</summary>
|
||||
<param name="that"></param>
|
||||
<param name="size"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:SaleIDO.Entity.Storeage.AdjustPriceOrder">
|
||||
<summary>
|
||||
调价单
|
||||
|
@ -1567,30 +1567,5 @@ namespace FreeSql.Tests.OracleMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1101,30 +1101,5 @@ namespace FreeSql.Tests.OracleMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1567,30 +1567,5 @@ namespace FreeSql.Tests.PostgreSQLMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1101,30 +1101,5 @@ namespace FreeSql.Tests.PostgreSQLMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1577,30 +1577,5 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1110,30 +1110,5 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1567,30 +1567,5 @@ namespace FreeSql.Tests.SqliteMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1101,30 +1101,5 @@ namespace FreeSql.Tests.SqliteMapType
|
||||
public void GuidNullable()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MygisPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisPolygon()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPoint()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiLineString()
|
||||
{
|
||||
}
|
||||
[Fact]
|
||||
public void MygisMultiPolygon()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -185,8 +185,6 @@ namespace FreeSql.Tests
|
||||
[Fact]
|
||||
public void Test02()
|
||||
{
|
||||
var testparmSelect = g.sqlserver.Select<TestMySqlStringIsNullable>().Where(a => a.nvarchar == "11" && a.nvarchar_notnull == "22" && a.nvarchar_null == "33" && a.varchar == "11" && a.varchar_notnull == "22" && a.varchar_null == "33");
|
||||
|
||||
var slsksd = g.mysql.Update<UserLike>().SetSource(new UserLike { Id = Guid.NewGuid(), CreateUserId = 1000, SubjectId = Guid.NewGuid() })
|
||||
.UpdateColumns(a => new
|
||||
{
|
||||
@ -291,6 +289,57 @@ namespace FreeSql.Tests
|
||||
|
||||
var sql = g.sqlite.Select<SysModule>()
|
||||
.ToSql(a => a.CreateTime.FormatDateTime("yyyy-MM-dd"));
|
||||
|
||||
|
||||
var parm1 = "11";
|
||||
var parm2 = "22";
|
||||
var parm3 = "33";
|
||||
var testparmSelect = g.sqlserver.Select<TestMySqlStringIsNullable>()
|
||||
.Where(a =>
|
||||
a.nvarchar == "11" &&
|
||||
a.nvarchar_notnull == "22" &&
|
||||
a.nvarchar_null == "33" &&
|
||||
a.varchar == "11" &&
|
||||
a.varchar_notnull == "22" &&
|
||||
a.varchar_null == "33" &&
|
||||
|
||||
a.nvarchar == parm1 &&
|
||||
a.nvarchar_notnull == parm2 &&
|
||||
a.nvarchar_null == parm3 &&
|
||||
a.varchar == parm3 &&
|
||||
a.varchar_notnull == parm2 &&
|
||||
a.varchar_null == parm3 &&
|
||||
|
||||
a.nvarchar == parm1.SetDbParameter(10) &&
|
||||
a.nvarchar_notnull == parm2.SetDbParameter(11) &&
|
||||
a.nvarchar_null == parm3.SetDbParameter(12) &&
|
||||
a.varchar == parm3.SetDbParameter(13) &&
|
||||
a.varchar_notnull == parm2.SetDbParameter(14) &&
|
||||
a.varchar_null == parm3.SetDbParameter(15) &&
|
||||
|
||||
|
||||
"11" == a.nvarchar &&
|
||||
"22" == a.nvarchar_notnull &&
|
||||
"33" == a.nvarchar_null &&
|
||||
"11" == a.varchar &&
|
||||
"22" == a.varchar_notnull &&
|
||||
"33" == a.varchar_null &&
|
||||
|
||||
parm1 == a.nvarchar &&
|
||||
parm2 == a.nvarchar_notnull &&
|
||||
parm3 == a.nvarchar_null &&
|
||||
parm1 == a.varchar &&
|
||||
parm2 == a.varchar_notnull &&
|
||||
parm3 == a.varchar_null &&
|
||||
|
||||
parm1.SetDbParameter(10) == a.nvarchar &&
|
||||
parm2.SetDbParameter(11) == a.nvarchar_notnull &&
|
||||
parm3.SetDbParameter(12) == a.nvarchar_null &&
|
||||
parm1.SetDbParameter(13) == a.varchar &&
|
||||
parm2.SetDbParameter(14) == a.varchar_notnull &&
|
||||
parm3.SetDbParameter(15) == a.varchar_null
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -301,7 +350,20 @@ namespace FreeSql.Tests
|
||||
|
||||
public static string FormatDateTime(this DateTime that, string arg1)
|
||||
{
|
||||
return $"date_format({context.Value.Values["arg1"]})";
|
||||
return $"date_format({context.Value.Values["that"]}, {context.Value.Values["arg1"]})";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置表达式中的 string 参数化长度,优化执行计划
|
||||
/// </summary>
|
||||
/// <param name="that"></param>
|
||||
/// <param name="size"></param>
|
||||
/// <returns></returns>
|
||||
public static string SetDbParameter(this string that, int size)
|
||||
{
|
||||
if (context.Value.DbParameter != null)
|
||||
context.Value.DbParameter.Size = size;
|
||||
return context.Value.Values["that"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user