mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 Dto 映射查询 Negate 表达式解析 bug;
This commit is contained in:
		@@ -9,7 +9,7 @@
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
 | 
			
		||||
	<PropertyGroup>
 | 
			
		||||
		<Version>3.2.666-preview20220623</Version>
 | 
			
		||||
		<Version>3.2.666-preview20220629</Version>
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
	
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,11 @@
 | 
			
		||||
            Type = Update 的时候,获取更新之前的对象
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.DbContext.EntityChangeReport.ChangeInfo.EntityType">
 | 
			
		||||
            <summary>
 | 
			
		||||
            实体类型
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.DbContext.EntityChangeReport.Report">
 | 
			
		||||
            <summary>
 | 
			
		||||
            实体变化记录
 | 
			
		||||
@@ -728,6 +733,15 @@
 | 
			
		||||
            <param name="modelBuilder"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSqlDbContextExtensions.ApplyConfigurationsFromAssembly(FreeSql.ICodeFirst,System.Reflection.Assembly,System.Func{System.Type,System.Boolean})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="codeFirst"></param>
 | 
			
		||||
            <param name="assembly"></param>
 | 
			
		||||
            <param name="predicate"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            创建普通数据上下文档对象
 | 
			
		||||
@@ -786,5 +800,14 @@
 | 
			
		||||
            <param name="that"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            批量注入 Repository,可以参考代码自行调整
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="services"></param>
 | 
			
		||||
            <param name="globalDataFilter"></param>
 | 
			
		||||
            <param name="assemblies"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
    </members>
 | 
			
		||||
</doc>
 | 
			
		||||
 
 | 
			
		||||
@@ -80,6 +80,25 @@ namespace FreeSql.Tests.SqlServer
 | 
			
		||||
            public virtual ICollection<Tag> Tags { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void NegateLambda()
 | 
			
		||||
        {
 | 
			
		||||
            var fsql = g.sqlserver;
 | 
			
		||||
 | 
			
		||||
            var t0 = fsql.Select<Tag>().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<Tag>().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()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user