From e2d6c890a909348c7ea9ce2c67529b4e2bc012c1 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 9 May 2022 15:52:59 +0800 Subject: [PATCH] update Exception message --- .../SqlServerExpression/OtherTest.cs | 2 +- FreeSql/Internal/CommonExpression.cs | 28 ++++++++++++++++++- .../Internal/CommonProvider/UpdateProvider.cs | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs index 70cfb014..4890f04b 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using FreeSql.Tests.DataContext.SqlServer; using System; using System.Collections.Generic; diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index a7b96e84..de8540d9 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -1954,7 +1954,33 @@ namespace FreeSql.Internal return; } exp3tmp = exp3Stack.Pop(); - if (exp3tmp.NodeType != ExpressionType.Parameter) return; + if (exp3tmp.NodeType != ExpressionType.Parameter) + { + //if (e.Expression.NodeType == ExpressionType.Call) + //{ + // var rootExpCall = e.Expression as MethodCallExpression; + // if (rootExpCall.Object == null && rootExpCall.Method.Name == "Any" && + // rootExpCall.Arguments.Count == 2 && + // rootExpCall.Arguments[0].Type.GetGenericTypeDefinition() == typeof(IEnumerable<>) && + // rootExpCall.Arguments[1].Type == typeof(Func<,>).MakeGenericType(rootExpCall.Arguments[0].Type.GetGenericArguments()[0], typeof(bool))) + // { + // //e.Tables[0].Parameter + // var anyExp = rootExpCall.Arguments[1]; + // while(anyExp.NodeType == ExpressionType.AndAlso) + // { + + // } + // if (anyExp.NodeType != ExpressionType.AndAlso && anyExp.NodeType != ExpressionType.Equal) return; + + + // var array = Expression.Lambda(rootExpCall.Arguments[0]).Compile().DynamicInvoke() as IEnumerable; + // foreach (var arritem in array) + // { + // } + // } + //} + return; + } if (exp3tmp.Type.FullName.StartsWith("FreeSql.ISelectGroupingAggregate")) return; var commonExp = sender as FreeSql.Internal.CommonExpression; if (commonExp == null) return; diff --git a/FreeSql/Internal/CommonProvider/UpdateProvider.cs b/FreeSql/Internal/CommonProvider/UpdateProvider.cs index 71af0381..095400c6 100644 --- a/FreeSql/Internal/CommonProvider/UpdateProvider.cs +++ b/FreeSql/Internal/CommonProvider/UpdateProvider.cs @@ -1003,7 +1003,7 @@ namespace FreeSql.Internal.CommonProvider sb.Append(" \r\nWHERE "); if (_source.Any()) { - if (_tempPrimarys.Any() == false) throw new ArgumentException($"{_table.Type.DisplayCsharp()} 没有定义主键,无法使用 SetSource,请尝试 SetDto"); + if (_tempPrimarys.Any() == false) throw new ArgumentException($"{_table.Type.DisplayCsharp()} 没有定义主键,无法使用 SetSource,请尝试 SetDto 或者 SetSource 指定临时主键"); sb.Append('(').Append(_commonUtils.WhereItems(_tempPrimarys, "", _source)).Append(')'); }