在EF中實現左聯接

2022-09-13 19:06:11 字數 783 閱讀 8083

當使用ef中的dbset進行join操作的時候如果,如果表之間沒有關聯關係的話,生成的sql語句是 inner join(inner join 和 left join的區別 就不在這闡述了),eg:

var user = await (from u in this.context.muser.where(sa => sa.id == pid)

join uw in this.context.muserwechat on u.id equals uw.userid

select new mvuserbaseinfo

).firstordefaultasync();

這樣相當於就是將muser和muserwechat 進行了inner join, 如果我們希望進行左連線的話可以借助defaultifempty() 來達到當聯接的表為空的時候,生成一條空的資料,從而達到左聯接的效果,eg:

var user = await (from u in this.context.muser.where(sa => sa.id == pid)

join uw in this.context.muserwechat on u.id equals uw.userid into uwt

from uwti in uwt.defaultifempty() // 變成left join

select new mvuserbaseinfo

).firstordefaultasync();

在EF中構建業務層小記

在使用entity framework時,它很好的幫我們處理了資料處理層,在業務層,我們對實體的操作,也有一些通用的東西,比如對實體的增 刪 改,這三種操作,大多數實體都相同,下面的 就是通用的在業務處理層的方法實體,如果有單獨的處理,子業務處理類可以繼承這個業務父類來實現自己的功能。下面是定義業務...

在EF中構建業務層小記

在使用entity framework時,它很好的幫我們處理了資料處理層,在業務層,我們對實體的操作,也有一些通用的東西,比如對實體的增 刪 改,這三種操作,大多數實體都相同,下面的 就是通用的在業務處理層的方法實體,如果有單獨的處理,子業務處理類可以繼承這個業務父類來實現自己的功能。下面是定義業務...

在EF中構建業務層小記

在使用entity framework時,它很好的幫我們處理了資料處理層,在業務層,我們對實體的操作,也有一些通用的東西,比如對實體的增 刪 改,這三種操作,大多數實體都相同,下面的 就是通用的在業務處理層的方法實體,如果有單獨的處理,子業務處理類可以繼承這個業務父類來實現自己的功能。下面是定義業務...