在使用LightSpeed对数据库进行Left Join或Right Join操作时,经常会报一些匪夷所思的异常。

明明表没有问题,表面上语句写的也没问题,可总是报错。看分析器里的SQL就知道了,是LightSpeed对Left Right Join的解析是有问题的。

注:LS对Left Join和 Right Join 最后都会解析成Group Join来处理

当然这种情况只是偶尔发生,是因为某些表及关系的创建方式问题(LS官网要求把项目发给他们来分析问题,嫌麻烦 就没有继续下去,具体原因就没有了解)

现在,可以用另外一种方式来绕过这个Bug(用FindBySQL或者存储过程也可以,但是我不想用SQL语句处理,因为表结构发生变化后,不能第一时间发现问题)

Query query2 = new Query
{EntityType = typeof(LQ_StudentApply),QueryExpression = Entity.Attribute<LQ_StudentApply>("LQ_SchoolId") == SchoolId,Order = Order.By("CreatedOn").Descending()
};
//通过OuterJoin来处理Left Join和Right Join
query2.Join = Join.Outer(typeof(LQ_StudentApply), typeof(LQ_Member), "Operator", "Id");
var rst1 = dbPlatform.Find(query2, query2.Mappings);
var saList = rst1.GetCollection<LQ_StudentApply>();
var oList = rst1.GetCollection<LQ_Member>();//Inner Join
query2.Join = Join.Inner(typeof(LQ_StudentApply), typeof(LQ_Member), "LQ_MemberId", "Id");
var rst2 = dbPlatform.Find(query2, query2.Mappings);
var memList = rst2.GetCollection<LQ_Member>();//拼合三个表的数据
var query = saList.Zip(memList, (sa, mem) => new
{SA = sa,Mem = mem
}).Zip(oList, (mix, o) => new
{MemberId = mix.Mem.Id,SId = mix.SA.Id,OperatorName = o != null ? o.RealName : ""
});

解析出来的SQL语句大体就是

SELECT *
FROM LQ_StudentApply SA
LEFT JOIN LQ_Member M ON SA.Operator = M.Id
INNER JOIN LQ_Member MEM ON SA.LQ_MemberId = MEM.Id
WHERE SA.LQ_SchoolId = 'SchoolId'
ORDER BY SA.CreatedOn DESC

转载于:https://www.cnblogs.com/TiestoRay/p/4688479.html

LightSpeed 的Left Join Bug解决方案相关推荐

  1. vue中使用baidushare分享到微信无法显示bug解决方案

    vue中使用baidushare分享到微信无法显示bug解决方案 参考文章: (1)vue中使用baidushare分享到微信无法显示bug解决方案 (2)https://www.cnblogs.co ...

  2. Ext1.X的CheckboxSelectionModel默认全选之后不允许编辑的BUG解决方案

    Ext1.X的CheckboxSelectionModel默认全选之后不允许编辑的BUG解决方案,ext 的CheckboxSelectionModel在后台默认选中之后,前台就不允许编辑的bug是存 ...

  3. entity framework框架生成摘要文档为空(没有元数据文档可用)的bug解决方案

    简介 entity framework在vs中生成的.edmx文件,会导致摘要(说明)为空的bug,具体bug信息为"没有元数据文档可用.",导致我们表名打点去字段时,无法预知字段 ...

  4. LINUX无法运行navixat,关于RX5700XT的驱动方法以及bug解决方案

    AMD Navi显卡在macOS Catalina 10.15.1 beta2中已经正式免驱,博主购入测试,现公布新显卡的驱动方法以及bug解决方案. Windows 使用DDU卸载原驱动并下载安装官 ...

  5. IE8/9的几个前端bug解决方案

    IE8/9的几个前端bug解决方案 参考文章: (1)IE8/9的几个前端bug解决方案 (2)https://www.cnblogs.com/joyeecheung/p/3935444.html ( ...

  6. Unity Spine SkeletonGraphic 动画重复播放 过度残影透明渐变Bug 解决方案

    Unity Spine SkeletonGraphic 动画重复播放 过度残影透明渐变Bug 解决方案 不推荐使用SetToSetupPose和Setup Pose相关,代码直接贴上 /// < ...

  7. div中的img标签多余空白bug解决方案

    上传图片之前: 上图之前之后: 原图是这样的: 发现区别了吧,这里用到了css3的object-fit属性为cover(保持原有尺寸比例.保证替换内容尺寸一定大于容器尺寸,宽度和高度至少有一个和容器一 ...

  8. “System.NullReferenceException”类型的异常在 App_Web_j2s3gau3.dll 中发生,但未在用户代码中进行处理的Bug解决方案

    "System.NullReferenceException"类型的异常在 App_Web_j2s3gau3.dll 中发生,但未在用户代码中进行处理的Bug解决方案 参考文章: ...

  9. 【JS提升】IE常见的BUG解决方案

    一.IE常见的BUG解决方案 (1)IE6常见BUG 盒子浮动的margin会变成2倍,解决方案 => display: inline / block 元素浮动会有3个像素间隙,解决方案 =&g ...

最新文章

  1. 解决ifconfig命令未找到
  2. linux远程登录x11,windows linux 通过SSH X11Forwrding 使用图形化界面
  3. 网卡清空缓存命令_九个常用的网络命令 ,很实用!
  4. 【五线谱】五线谱的常用符号 ( 花连谱号 | 高音谱号 | 低音谱号 | 休止符 | 小节线 )
  5. Java的知识点28——文件编码、IO流的实例
  6. 【深度学习】算法工程师面试必考点:Dropout和R-Dropout的使用技巧
  7. 溢出键盘程序漏洞 得到管理员权限
  8. 【汇编语言】8086汇编语言的debug中,t和p命令的区别
  9. ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
  10. ABP框架使用打印日志
  11. hbm.xml支持的类型
  12. java如何开根号?
  13. 《五分钟商学院》个人篇学习总结(上)
  14. HMC5883L指南针罗盘模块连接arduino使用的注意事项
  15. 无人机飞行控制逻辑以及不稳定原因分析
  16. 坚持#第17天~回忆重装系统
  17. 计算机显示器黑屏首先检查,计算机显示器黑屏的原因是什么?电脑显示器黑屏的解决方案...
  18. SpringMVC 学谈 (第二章)
  19. 班导师见面会会议记录
  20. mac word 保存文件丢失,明明保存啦,但是就是没啦,不见啦。这个怎么解决。

热门文章

  1. .NET:动态代理的 “5 + 1” 模式
  2. 如果ASM磁盘组由哪些物理磁盘组成?
  3. Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
  4. deepin启动盘无法引导安装_深度启动盘制作工具(Deepin Boot Maker)怎么安装kubuntu?Deepin Boot Maker图文教程...
  5. hdu1686 最大匹配次数 KMP
  6. 【数字信号处理】线性时不变系统 LTI ( 判断某个系统是否是 “ 非时变 “ 系统 | 案例二 )
  7. 【C 语言】数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )
  8. 【错误记录】Flutter 报错 Downloading the Dart SDK using the BITS service failed, retrying with WebRequest...
  9. 【计算理论】计算复杂性 ( 无向图独立集问题 | 独立集问题是 NP 完全问题证明思路 | 证明独立集问题是 NP 完全问题 )
  10. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )