mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 优化 GlobalFilter Apply 自动重命名表达式参数名,避免内容重复问题;
- 修复 表达式解析 Guid.NewGuid() 的错误;
This commit is contained in:
parent
e01f7a2061
commit
05cf13f560
@ -464,54 +464,5 @@
|
|||||||
部门对象
|
部门对象
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:Business.OtherOrder.joinYear">
|
|
||||||
<summary>
|
|
||||||
入学年份
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="F:Business.OtherOrder.period">
|
|
||||||
<summary>
|
|
||||||
学段
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="F:Business.OtherOrder.count">
|
|
||||||
<summary>
|
|
||||||
人数
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<!-- Badly formed XML comment ignored for member "T:Business.OtherOrder.orderTypeEmun" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.orderTypeEmun.错题本" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.orderTypeEmun.学情套餐" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.orderTypeEmun.耗材" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.orderTypeEmun.其他" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "T:Business.OtherOrder.isInvoiceEmun" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.isInvoiceEmun.否" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.isInvoiceEmun.是" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "T:Business.OtherOrder.staEmun" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.新建" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.待内勤审核" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.待财务审核" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.审核不通过" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.审核通过" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.已撤回" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "F:Business.OtherOrder.staEmun.已作废" -->
|
|
||||||
<member name="F:Business.OtherOrder.dataEnum.待标注">
|
|
||||||
<summary>
|
|
||||||
待标注
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="F:Business.OtherOrder.dataEnum.合格">
|
|
||||||
<summary>
|
|
||||||
合格
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="F:Business.OtherOrder.dataEnum.不合格">
|
|
||||||
<summary>
|
|
||||||
不合格
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<!-- Badly formed XML comment ignored for member "M:Business.OtherOrder.orderTypeNameMap(Business.OtherOrder.orderTypeEmun)" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "M:Business.OtherOrder.isInvoiceNameMap(Business.OtherOrder.isInvoiceEmun)" -->
|
|
||||||
<!-- Badly formed XML comment ignored for member "M:Business.OtherOrder.staNameMap(Business.OtherOrder.staEmun)" -->
|
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
@ -200,9 +200,33 @@ namespace FreeSql.Tests
|
|||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class gf_t1
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
public int rowstate { get; set; }
|
||||||
|
}
|
||||||
|
public class gf_t2
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
public decimal rowstate { get; set; }
|
||||||
|
}
|
||||||
|
public class gf_t3
|
||||||
|
{
|
||||||
|
public Guid id { get; set; }
|
||||||
|
public decimal rowstate { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Test02()
|
public void Test02()
|
||||||
{
|
{
|
||||||
|
g.mysql.GlobalFilter.Apply<gf_t1>("gft1", a => a.rowstate > -1)
|
||||||
|
.Apply<gf_t2>("gft2", a => a.rowstate > -2)
|
||||||
|
.Apply<gf_t3>("gft3", a => a.rowstate > -3);
|
||||||
|
|
||||||
|
var gft1 = g.mysql.Select<gf_t1>().Where(a => a.id == Guid.NewGuid()).ToList();
|
||||||
|
var gft2 = g.mysql.Select<gf_t2>().Where(a => a.id == Guid.NewGuid()).ToList();
|
||||||
|
var gft3 = g.mysql.Select<gf_t3>().Where(a => a.id == Guid.NewGuid()).ToList();
|
||||||
|
|
||||||
var tekset = g.sqlite.Select<employee>().IncludeMany(a => a.departments).ToList();
|
var tekset = g.sqlite.Select<employee>().IncludeMany(a => a.departments).ToList();
|
||||||
|
|
||||||
g.sqlserver.Delete<TBatInst>().Where("1=1").ExecuteAffrows();
|
g.sqlserver.Delete<TBatInst>().Where("1=1").ExecuteAffrows();
|
||||||
|
@ -1335,7 +1335,7 @@ namespace FreeSql.Internal
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
class ReplaceVisitor : ExpressionVisitor
|
internal class ReplaceVisitor : ExpressionVisitor
|
||||||
{
|
{
|
||||||
private ParameterExpression parameter;
|
private ParameterExpression parameter;
|
||||||
public Expression Modify(Expression expression, ParameterExpression parameter)
|
public Expression Modify(Expression expression, ParameterExpression parameter)
|
||||||
|
@ -32,7 +32,13 @@ namespace FreeSql.Internal
|
|||||||
|
|
||||||
_filters.TryGetValue(name, out var item);
|
_filters.TryGetValue(name, out var item);
|
||||||
if (item == null) item = new Item { Id = ++_id, Name = name };
|
if (item == null) item = new Item { Id = ++_id, Name = name };
|
||||||
item.Where = where;
|
|
||||||
|
var newParameter = Expression.Parameter(typeof(TEntity), $"gf{_id}");
|
||||||
|
var newlambda = Expression.Lambda<Func<TEntity, bool>>(
|
||||||
|
new CommonExpression.ReplaceVisitor().Modify(where.Body, newParameter),
|
||||||
|
newParameter
|
||||||
|
);
|
||||||
|
item.Where = newlambda;
|
||||||
_filters.AddOrUpdate(name, item, (_, __) => item);
|
_filters.AddOrUpdate(name, item, (_, __) => item);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -70,21 +70,21 @@ namespace FreeSql.MySql
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as unsigned)";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as unsigned)";
|
||||||
case "System.Guid": return $"substr(cast({getExp(callExp.Arguments[0])} as char), 1, 36)";
|
case "System.Guid": return $"substr(cast({getExp(callExp.Arguments[0])} as char), 1, 36)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as signed)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as signed)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"cast({getExp(callExp.Object)} as char)" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"cast({getExp(callExp.Object)} as char)" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -73,25 +73,25 @@ namespace FreeSql.Odbc.Default
|
|||||||
case "System.UInt64": return _utils.Adapter.LambdaConvert_ToUInt64(callExp.Method.DeclaringType, getExp(callExp.Arguments[0]));
|
case "System.UInt64": return _utils.Adapter.LambdaConvert_ToUInt64(callExp.Method.DeclaringType, getExp(callExp.Arguments[0]));
|
||||||
case "System.Guid": return _utils.Adapter.LambdaConvert_ToGuid(callExp.Method.DeclaringType, getExp(callExp.Arguments[0]));
|
case "System.Guid": return _utils.Adapter.LambdaConvert_ToGuid(callExp.Method.DeclaringType, getExp(callExp.Arguments[0]));
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
switch (callExp.Method.DeclaringType.NullableTypeOrThis().ToString())
|
switch (callExp.Method.DeclaringType.NullableTypeOrThis().ToString())
|
||||||
{
|
{
|
||||||
case "System.Guid": return _utils.Adapter.LambdaGuid_NewGuid;
|
case "System.Guid": return _utils.Adapter.LambdaGuid_NewGuid;
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return _utils.Adapter.LambdaRandom_Next;
|
if (callExp.Object?.Type == typeof(Random)) return _utils.Adapter.LambdaRandom_Next;
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return _utils.Adapter.LambdaRandom_NextDouble;
|
if (callExp.Object?.Type == typeof(Random)) return _utils.Adapter.LambdaRandom_NextDouble;
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return _utils.Adapter.LambdaRandom_NextDouble;
|
if (callExp.Method.DeclaringType.IsNumberType()) return _utils.Adapter.LambdaRandom_NextDouble;
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? _utils.Adapter.LambdaConvert_ToString(callExp.Object.Type, getExp(callExp.Object)) : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? _utils.Adapter.LambdaConvert_ToString(callExp.Object.Type, getExp(callExp.Object)) : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -70,21 +70,21 @@ namespace FreeSql.Odbc.MySql
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as unsigned)";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as unsigned)";
|
||||||
case "System.Guid": return $"substr(cast({getExp(callExp.Arguments[0])} as char), 1, 36)";
|
case "System.Guid": return $"substr(cast({getExp(callExp.Arguments[0])} as char), 1, 36)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as signed)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as signed)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"cast({getExp(callExp.Object)} as char)" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"cast({getExp(callExp.Object)} as char)" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -70,21 +70,21 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as number)";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as number)";
|
||||||
case "System.Guid": return $"substr(to_char({getExp(callExp.Arguments[0])}), 1, 36)";
|
case "System.Guid": return $"substr(to_char({getExp(callExp.Arguments[0])}), 1, 36)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(dbms_random.value*1000000000 as smallint)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(dbms_random.value*1000000000 as smallint)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "dbms_random.value";
|
if (callExp.Object?.Type == typeof(Random)) return "dbms_random.value";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "dbms_random.value";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "dbms_random.value";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"to_char({getExp(callExp.Object)})" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"to_char({getExp(callExp.Object)})" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -76,19 +76,19 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "(random()*1000000000)::int4";
|
if (callExp.Object?.Type == typeof(Random)) return "(random()*1000000000)::int4";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "random()";
|
if (callExp.Object?.Type == typeof(Random)) return "random()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "random()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "random()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"({getExp(callExp.Object)})::varchar" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"({getExp(callExp.Object)})::varchar" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -70,25 +70,25 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as bigint)";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as bigint)";
|
||||||
case "System.Guid": return $"cast({getExp(callExp.Arguments[0])} as uniqueidentifier)";
|
case "System.Guid": return $"cast({getExp(callExp.Arguments[0])} as uniqueidentifier)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
switch (callExp.Method.DeclaringType.NullableTypeOrThis().ToString())
|
switch (callExp.Method.DeclaringType.NullableTypeOrThis().ToString())
|
||||||
{
|
{
|
||||||
case "System.Guid": return $"newid()";
|
case "System.Guid": return $"newid()";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as int)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as int)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? (callExp.Object.Type.NullableTypeOrThis() == typeof(Guid) ? $"cast({getExp(callExp.Object)} as varchar(36))" : $"cast({getExp(callExp.Object)} as nvarchar)") : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? (callExp.Object.Type.NullableTypeOrThis() == typeof(Guid) ? $"cast({getExp(callExp.Object)} as varchar(36))" : $"cast({getExp(callExp.Object)} as nvarchar)") : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -70,21 +70,21 @@ namespace FreeSql.Oracle
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as number)";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as number)";
|
||||||
case "System.Guid": return $"substr(to_char({getExp(callExp.Arguments[0])}), 1, 36)";
|
case "System.Guid": return $"substr(to_char({getExp(callExp.Arguments[0])}), 1, 36)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(dbms_random.value*1000000000 as smallint)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(dbms_random.value*1000000000 as smallint)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "dbms_random.value";
|
if (callExp.Object?.Type == typeof(Random)) return "dbms_random.value";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "dbms_random.value";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "dbms_random.value";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"to_char({getExp(callExp.Object)})" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"to_char({getExp(callExp.Object)})" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -77,19 +77,19 @@ namespace FreeSql.PostgreSQL
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "(random()*1000000000)::int4";
|
if (callExp.Object?.Type == typeof(Random)) return "(random()*1000000000)::int4";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "random()";
|
if (callExp.Object?.Type == typeof(Random)) return "random()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "random()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "random()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"({getExp(callExp.Object)})::varchar" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"({getExp(callExp.Object)})::varchar" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -70,25 +70,25 @@ namespace FreeSql.SqlServer
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as bigint)";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as bigint)";
|
||||||
case "System.Guid": return $"cast({getExp(callExp.Arguments[0])} as uniqueidentifier)";
|
case "System.Guid": return $"cast({getExp(callExp.Arguments[0])} as uniqueidentifier)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
switch (callExp.Method.DeclaringType.NullableTypeOrThis().ToString())
|
switch (callExp.Method.DeclaringType.NullableTypeOrThis().ToString())
|
||||||
{
|
{
|
||||||
case "System.Guid": return $"newid()";
|
case "System.Guid": return $"newid()";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as int)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(rand()*1000000000 as int)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
if (callExp.Object?.Type == typeof(Random)) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "rand()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? (callExp.Object.Type.NullableTypeOrThis() == typeof(Guid) ? $"cast({getExp(callExp.Object)} as varchar(36))" : $"cast({getExp(callExp.Object)} as nvarchar)") : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? (callExp.Object.Type.NullableTypeOrThis() == typeof(Guid) ? $"cast({getExp(callExp.Object)} as varchar(36))" : $"cast({getExp(callExp.Object)} as nvarchar)") : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
@ -70,21 +70,21 @@ namespace FreeSql.Sqlite
|
|||||||
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as decimal(21,0))";
|
case "System.UInt64": return $"cast({getExp(callExp.Arguments[0])} as decimal(21,0))";
|
||||||
case "System.Guid": return $"substr(cast({getExp(callExp.Arguments[0])} as character), 1, 36)";
|
case "System.Guid": return $"substr(cast({getExp(callExp.Arguments[0])} as character), 1, 36)";
|
||||||
}
|
}
|
||||||
break;
|
return null;
|
||||||
case "NewGuid":
|
case "NewGuid":
|
||||||
break;
|
return null;
|
||||||
case "Next":
|
case "Next":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "cast(random()*1000000000 as int)";
|
if (callExp.Object?.Type == typeof(Random)) return "cast(random()*1000000000 as int)";
|
||||||
break;
|
return null;
|
||||||
case "NextDouble":
|
case "NextDouble":
|
||||||
if (callExp.Object?.Type == typeof(Random)) return "random()";
|
if (callExp.Object?.Type == typeof(Random)) return "random()";
|
||||||
break;
|
return null;
|
||||||
case "Random":
|
case "Random":
|
||||||
if (callExp.Method.DeclaringType.IsNumberType()) return "random()";
|
if (callExp.Method.DeclaringType.IsNumberType()) return "random()";
|
||||||
break;
|
return null;
|
||||||
case "ToString":
|
case "ToString":
|
||||||
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"cast({getExp(callExp.Object)} as character)" : null;
|
if (callExp.Object != null) return callExp.Arguments.Count == 0 ? $"cast({getExp(callExp.Object)} as character)" : null;
|
||||||
break;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var objExp = callExp.Object;
|
var objExp = callExp.Object;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user