日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LightSpeed 的Left Join Bug解决方案

發布時間:2025/6/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LightSpeed 的Left Join Bug解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用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解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。