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