在select中 大写字符串前1位加下划线失效。 返回
SqlSugar
沟通中
10
434

悬赏:0 飞吻
我的是MYSQL: public ISugarQueryable<EmsDeviceCheckstdOut> Query() { ISugarQueryable<EmsDeviceCheckstdOut> queryable = _db.Queryable<EmsDeviceCheckstd,EmsDeviceCheckstdLink,EmsDeviceUsetype>((a,b,c)=> new JoinQueryInfos( JoinType.Left,a.Id==b.CheckstdId, JoinType.Left,b.UsetypeId==c.Id )) .Select((a,b,c) => new EmsDeviceCheckstdOut() { Id = a.Id.SelectAll(), Usename=c.Usename, UsetypeId=c.Id, UserTypeLinkId=c.Id }).MergeTable() .OrderByDescending(a => a.CreationTime); return queryable; }
转换出的SQL语句: SELECT * FROM ( SELECT a.*, c.usename AS Usename, c.id AS UsetypeId, c.id AS UserTypeLinkId FROM ems_device_checkstd a LEFT JOIN ems_device_checkstd_link b ON ( a.id = b.checkstd_id ) LEFT JOIN ems_device_usetype c ON ( b.usetype_id = c.id ) WHERE ( a.is_deleted = 0 ) ) MergeTable WHERE ( usetype_id = 498405618450501 ) AND ( is_deleted = 0 ) ORDER BY creation_time DESC
但是在select 中的 UsetypeId、UserTypeLinkId 并没有变成 usetype_id、User_type_link_id
热忱回答(10)
-
fate sta VIP0
2024/5/71.不要用
Id = a.Id.SelectAll(),
改成
.Select((a,b,c) => new EmsDeviceCheckstdOut() { Usename=c.Usename, UsetypeId=c.Id, UserTypeLinkId=c.Id },true //自动映射 ).MergeTable()
0 回复 -
fate sta VIP0
2024/5/72.另外DTO要禁用下划线和禁用过滤器
0 回复 -
fate sta VIP0
2024/5/73.Orderby能扔select前面就扔前面,特殊情况才用mergetable
0 回复 -
西红柿炒鸡蛋 VIP0
2024/5/7@fate sta:多张表关联合并成一张表。
0 回复 -
西红柿炒鸡蛋 VIP0
2024/5/7@fate sta:
.Select((a,b,c) =>
new
EmsDeviceCheckstdOut()
{
Usename=c.Usename,
UsetypeId=c.Id,
UserTypeLinkId=c.Id
},
true
//自动映射
).MergeTable()
但是还是没有解决,UsetypeId 没有变成usetype_id
0 回复 -
西红柿炒鸡蛋 VIP0
2024/5/7去掉MergeTable(), 查询就有问题,
Expressionable<EmsDeviceCheckstdOut> expressionable = Expressionable.Create<EmsDeviceCheckstdOut>(); expressionable.AndIF(!string.IsNullOrEmpty(searchquery.Keyword), a => a.Code.Contains(searchquery.Keyword) || a.Checktool.Contains(searchquery.Keyword) || a.Area.Contains(searchquery.Keyword) || a.Checkcontent.Contains(searchquery.Keyword)); expressionable.AndIF(searchquery.UsetypeId>0, b => b.UsetypeId==searchquery.UsetypeId); pagedlist = await _emsDeviceCheckstdService.GetAll(expressionable);
去掉MergeTable 后,usetypeId 是B表中的字段,
0 回复 -
fate sta VIP0
2024/5/7我说了3点,你不去掉,就看1和2
0 回复 -
西红柿炒鸡蛋 VIP0
2024/5/8@fate sta:成为了一个死循环问题:
使用MergeTable: is_deleted 被转换成 IsDeleted, MergeTable 后就没有is_deleted 查询报错。
不用MergeTable情况:
0 回复 -
fate sta VIP0
2024/5/8@西红柿炒鸡蛋:还有疑问提供完整DEMO,不方便解释
0 回复 -
fate sta VIP0
2024/5/8我都说了用Mergetable你就看1和2 ,没说不让你用,我是让你禁用DTO 的下划线和过滤器
0 回复