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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

EF架构~LinqToEntity里实现left join的一对一与一对多

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF架构~LinqToEntity里实现left join的一对一与一对多 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

回到目錄

對于linq to sql里實現(xiàn)left join我已經(jīng)介紹過了,這篇文章的出現(xiàn)是由于最近在項目里遇到的一個問題,解決這個問題花了我不少時間,可能有2個小時,事件是這樣的,對于兩個表,它們是一對多關系,而需求是返回一個一對一的關系,并將最新的數(shù)據(jù)返回,這個很多同學都知道,可以使用inner join,但是,對于inner? join來說,當處理的是一對多關系時,它將會出現(xiàn)多條記錄,這也是正常的;而它并不滿足我們今天的需求,經(jīng)過測試后,找到了解決這個問題的方法,下面看代碼:

一對多關系

from r in base.GetModel() join data in new TsingDa_NewLearningBarRepository<FAQ_Reply>(UnitWork).GetModel().Where(i => i.Status == (int)Status.Normal) on r.FAQInfoID equals data.FAQInfoID into list

這個很容易理解,將滿足faqinfoId的FAQ_Reply集合獲出,放入list變量中。

一對一關系

from r in base.GetModel() join data in new TsingDa_NewLearningBarRepository<FAQ_Reply>(UnitWork).GetModel().Where(i => i.Status == (int)Status.Normal) on r.FAQInfoID equals data.FAQInfoID

這種寫法是正規(guī)的inner join寫法,它適合于數(shù)據(jù)結(jié)構(gòu)中的一對一關系,即兩張表有相同的主鍵,它們在數(shù)據(jù)中是嚴格一對一的,如果不是一對一,那種,這個語句將會出現(xiàn)重復數(shù)據(jù)!

下面是在EF中對left? join進行的一對一改造

join data in new TsingDa_NewLearningBarRepository<FAQ_Reply>(UnitWork).GetModel().Where(i => i.Status == (int)Status.Normal)on r.FAQInfoID equals data.FAQInfoID into listfrom data in list.EmptyOrDefalt()

可很遺憾,并不成功,還是返回的重復數(shù)據(jù),這在傳統(tǒng)的linq to sql中是可以的,但在linq to entity中是不行的,因為它們生成SQL語句的內(nèi)核不同

正確的一對一做法

join data in new TsingDa_NewLearningBarRepository<FAQ_Reply>(UnitWork).GetModel().Where(i => i.Status == (int)Status.Normal)on r.FAQInfoID equals data.FAQInfoID into listselect new FAQ_Info_Ext(){FAQReply = list.OrderByDescending(i => i.AddTime).FirstOrDefault()}

我們可以看到,它的巧妙是在數(shù)據(jù)賦值上...

看一個數(shù)據(jù)庫的監(jiān)控

剛看到后,真是下了我一大跳,怎么連了這么多庫呀,暈,然后,本地設斷點調(diào)試了一下,原來和我的代碼沒有關系,是其它代碼惹的禍!

我的代碼運行是這樣的

這是可以接受的,在我的預料之中,呵呵。

回到目錄

總結(jié)

以上是生活随笔為你收集整理的EF架构~LinqToEntity里实现left join的一对一与一对多的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。