diff --git a/Directory.Build.props b/Directory.Build.props
index 0fecf6f2..1fdd13d4 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -9,7 +9,7 @@
- 3.2.666-preview20220623
+ 3.2.666-preview20220629
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 4335acb5..26522f10 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -74,6 +74,11 @@
Type = Update 的时候,获取更新之前的对象
+
+
+ 实体类型
+
+
实体变化记录
@@ -728,6 +733,15 @@
+
+
+ 根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
+
+
+
+
+
+
创建普通数据上下文档对象
@@ -786,5 +800,14 @@
+
+
+ 批量注入 Repository,可以参考代码自行调整
+
+
+
+
+
+
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
index d57aa784..244c3dfe 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
@@ -80,6 +80,25 @@ namespace FreeSql.Tests.SqlServer
public virtual ICollection Tags { get; set; }
}
+ [Fact]
+ public void NegateLambda()
+ {
+ var fsql = g.sqlserver;
+
+ var t0 = fsql.Select().ToSql(a => new
+ {
+ Id = -a.Id,
+ Ddd2 = -a.Ddd
+ });
+ Assert.Equal(@"SELECT -(a.[Id]) as1, -(a.[Ddd]) as2
+FROM [Tag] a", t0);
+
+ var t1 = fsql.Select().Where(a => -a.Id > -100).ToSql();
+ Assert.Equal(@"SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name]
+FROM [Tag] a
+WHERE (-(a.[Id]) > -100)", t1);
+ }
+
[Fact]
public void AsSelect()
{
diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs
index 1272b088..f9d3a108 100644
--- a/FreeSql/Internal/CommonExpression.cs
+++ b/FreeSql/Internal/CommonExpression.cs
@@ -57,7 +57,7 @@ namespace FreeSql.Internal
case ExpressionType.Lambda: return ReadAnonymousField(_tables, _tableRule, field, parent, ref index, (exp as LambdaExpression)?.Body, select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, isAllDtoMap);
case ExpressionType.Negate:
case ExpressionType.NegateChecked:
- parent.DbField = $"-({ExpressionLambdaToSql(exp, getTSC())})";
+ parent.DbField = $"-({ExpressionLambdaToSql((exp as UnaryExpression)?.Operand, getTSC())})";
field.Append(", ").Append(parent.DbField);
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(_common.FieldAsAlias(GetFieldAsCsName(parent.CsName)));
@@ -787,7 +787,7 @@ namespace FreeSql.Internal
return formatSql(Expression.Lambda(exp).Compile().DynamicInvoke(), tsc.mapType, tsc.mapColumnTmp, tsc.dbParams); //bug: Where(a => a.Id = (int)enum)
return ExpressionLambdaToSql(expOperand, tsc);
case ExpressionType.Negate:
- case ExpressionType.NegateChecked: return "-" + ExpressionLambdaToSql((exp as UnaryExpression)?.Operand, tsc);
+ case ExpressionType.NegateChecked: return $"-({ExpressionLambdaToSql((exp as UnaryExpression)?.Operand, tsc)})";
case ExpressionType.Constant: return formatSql((exp as ConstantExpression)?.Value, tsc.mapType, tsc.mapColumnTmp, null);
case ExpressionType.Conditional:
var condExp = exp as ConditionalExpression;