mysql8.0全局过滤器生成的sql语句会添加重复条件 返回
等等我 发布于1周前
全局配置软删除条件db.QueryFilter.AddTableFilter<ISoftDelete>(it => it.IsDeleted == false);
var queryable = Db.Queryable<EquCard>() .InnerJoin<EquDictionary>((a, b) => a.DictionaryId == b.Id) .LeftJoin<EquManufacturer>((a, b, c) => b.ManufacturerId == c.Id) .LeftJoin<EquSupplier>((a, b, c, d) => a.SupplierId == d.Id) .LeftJoin<EquInboundHead>((a, b, c, d, e) => e.Id == a.InboundHeadId) .WhereIF(!string.IsNullOrWhiteSpace(input.EquName), (a, b, c, d, e) => a.Name.Contains(input.EquName)) .WhereIF(!string.IsNullOrWhiteSpace(input.EquCardCode), (a, b, c, d, e) => a.Code.Contains(input.EquCardCode)) .WhereIF(!string.IsNullOrWhiteSpace(input.EquCode), (a, b, c, d, e) => b.Code.Contains(input.EquCode)) .WhereIF(input.StartTime.HasValue, (a, b, c, d, e) => e.AuditTime >= input.StartTime) .WhereIF(input.EndTime.HasValue, (a, b, c, d, e) => e.AuditTime <=input.EndTime)
具体生成的sql语句
SELECT
`a`.`id` AS `Id`,
`b`.`code` AS `EquCode`,
`c`.`name` AS `ManufacturerName`,
`d`.`name` AS `Supplier`,
`e`.`code` AS `InboundHeadNUm`
FROM
`equ_card` `a`
INNER JOIN `equ_dictionary` `b` ON (`a`.`dictionary_id` = `b`.`id`)
AND (`b`.`is_deleted` = @IsDeleted0)
AND (`b`.`is_deleted` = @IsDeleted1)
LEFT JOIN `equ_manufacturer` `c` ON (`b`.`manufacturer_id` = `c`.`id`)
AND (`c`.`is_deleted` = @IsDeleted0)
AND (`c`.`is_deleted` = @IsDeleted1)
LEFT JOIN `equ_supplier` `d` ON (`a`.`supplier_id` = `d`.`id`)
AND (`d`.`is_deleted` = @IsDeleted0)
AND (`d`.`is_deleted` = @IsDeleted1)
LEFT JOIN `equ_inbound_head` `e` ON (`e`.`id` = `a`.`inbound_head_id`)
AND (`e`.`is_deleted` = @IsDeleted0)
AND (`e`.`is_deleted` = @IsDeleted1)
WHERE
(`a`.`is_deleted` = @IsDeleted0)
AND (`a`.`is_deleted` = @IsDeleted1)
LIMIT 0,
10
怎么这个 `is_deleted` 会生成重复的呢
热忱回答(2)
-
等等我 VIP0
1周前已解决
将var totalCount = await queryable.CountAsync();
var skip = (input.PageIndex - 1) * input.PageSize;var list = await queryable.Skip(skip).Take(input.PageSize).ToListAsync();
改成
RefAsync<int> totalNumber = 0;
var list = await queryable.ToPageListAsync(input.PageIndex, input.PageSize, totalNumber);
0 回复 -
fate sta VIP0
1周前过滤器扔的地方不对,按文档:过滤器,扔到指定地方。
0 回复