Skip to content

Commit 7273daa

Browse files
committed
修复newexpression在表达式内解析值不生效的bug,发布x.6.0.28
1 parent 34c3844 commit 7273daa

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

nuget-publish.bat

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
:start
22
::定义版本
3-
set EFCORE2=2.6.0.27
4-
set EFCORE3=3.6.0.27
5-
set EFCORE5=5.6.0.27
6-
set EFCORE6=6.6.0.27
3+
set EFCORE2=2.6.0.28
4+
set EFCORE3=3.6.0.28
5+
set EFCORE5=5.6.0.28
6+
set EFCORE6=6.6.0.28
77

88
::删除所有bin与obj下的文件
99
@echo off

src/ShardingCore/Sharding/Visitors/QueryableRouteDiscoverVisitor.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,11 @@ private ShardingPredicateResult IsShardingWrapConstant(MethodCallExpression meth
216216
/// <param name="expression"></param>
217217
/// <returns></returns>
218218
private bool ExpressionCanGetValue(Expression expression)
219-
{
219+
{
220220
return expression is ConstantExpression
221+
|| expression is NewExpression
222+
|| expression is ListInitExpression
223+
|| expression is NewArrayExpression
221224
|| (expression is MemberExpression member && (member.Expression is ConstantExpression ||
222225
member.Expression is MemberExpression ||
223226
member.Expression is MemberExpression))

src/ShardingCore/Sharding/Visitors/ShardingExpressionVisitor.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ protected object GetExpressionValue(Expression expression)
4444
{
4545
case ConstantExpression e:
4646
return e.Value;
47+
case NewExpression e:
48+
return e.Constructor?.Invoke(e.Arguments.Select(a => ((ConstantExpression)a).Value).ToArray());
4749

4850
case MemberExpression e when e.Member is FieldInfo field:
4951
return field.GetValue(

test/ShardingCore.CommonTest/ShardingTableTime.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public void TestSingleTable()
9696
var obj1 = new {time=new DateTime(2022, 1, 2)};
9797
var queryables=new List<IQueryable<TestTimeEntity>>()
9898
{
99+
new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time== new DateTime(2022, 1, 2)),
99100
new List<TestTimeEntity>().AsQueryable().CheckBetween((DateTime?)queryTime,(DateTime?)queryTime3,o=>o.Time),
100101
new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time==times2[0]),
101102
new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time>=times2[0]&&o.Time<times2[1]),

0 commit comments

Comments
 (0)