第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅當(dāng)不為空時,如何使用 Include() 急切加載?

僅當(dāng)不為空時,如何使用 Include() 急切加載?

C#
忽然笑 2022-06-19 16:26:12
我正在嘗試做:var abc = Context.PersonSet.Include(p=>p.Child).ToList();但并非所有人都有孩子。所以我得到:我想得到所有的人,如果孩子不為空,我想包括它。也可以將 Child 包含為 null。
查看完整描述

4 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊

我不知道為什么人們一直支持這樣的解決方案:

Include(p => p.NavProp ?? new List<NavPropType>())

因?yàn)槟切胁煌?,所以對以下?nèi)容無效Include()

無效操作異常:

Include 屬性 lambda 表達(dá)式p => (p.NavProp ?? value(System.Collections.Generic.List'1[NavPropType]))無效。該表達(dá)式應(yīng)表示屬性訪問:t => t.MyProperty。

要定位在派生類型上聲明的導(dǎo)航,請指定目標(biāo)類型的顯式類型 lambda 參數(shù),例如(Derived d) => d.MyProperty。有關(guān)包含相關(guān)數(shù)據(jù)的詳細(xì)信息,請參閱http://go.microsoft.com/fwlink/?LinkID=746393

解決方案:使用默認(rèn)值聲明您的屬性:

public class Foo{
    public List<Bar> Bars { get; set; } = new List<Bar>();}

這確保Bars不會null在沒有找到相關(guān)記錄時出現(xiàn)。


查看完整回答
反對 回復(fù) 2022-06-19
?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個贊

返回空子而不是 null

 Context.PersonSet.Include(a => ((a.Child == null) ? new Collection<Child>() : a.Child));



查看完整回答
反對 回復(fù) 2022-06-19
?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個贊

如果他們有任何孩子,您可以使用 GroupJoin 來獲取所有人并加載他們的孩子:(考慮在這種方法中,您應(yīng)該在您的上下文中有 DbSet of Children)

Context.PersonSet.GroupJoin(Context.Children, p => p.Id, c => c.PersonId, (p, c) =>
                 new { Person = p, Child = c }).ToList();


查看完整回答
反對 回復(fù) 2022-06-19
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個贊

例外不應(yīng)該來自那條線。Include()應(yīng)該使用LEFT JOIN完全符合您要求的 a :“我想獲取所有人員,如果孩子不為空,我想包括它”。要確認(rèn)這一點(diǎn),請檢查從 LINQ 生成的 SQL。

要解決此問題,請查看使用查詢結(jié)果的代碼abc并查看它是否正確處理Child集合(即檢查集合是否為空)。


查看完整回答
反對 回復(fù) 2022-06-19
  • 4 回答
  • 0 關(guān)注
  • 219 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號