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

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

使用 EFCore 檢索集合時,為什么檢索到的實體不包括它們與其他對象的關(guān)系?

使用 EFCore 檢索集合時,為什么檢索到的實體不包括它們與其他對象的關(guān)系?

C#
嚕嚕噠 2022-12-04 13:22:11
在將 Entity Framework Core 與 SQL Server 一起使用時,我遇到了一個意想不到的問題。我有一個實體 A 與實體 B 具有一對多關(guān)系。 [Table("client")]    public class Client    {        public long ID { get; set; }        public string Name { get; set; }        public ICollection<Configuration> Configurations { get; set; } = new LinkedList<Configuration>();    }我從數(shù)據(jù)庫中得到實體 A 的實例列表,如下所示:public ICollection<Client> GetAllClients(){    return _dbContext.Clients.ToList();}當我調(diào)用這個函數(shù)時,我得到一個實例列表,關(guān)系中沒有實體 B 的實例。為什么沒有正確檢索到關(guān)系中的對象?我還發(fā)現(xiàn),如果我將這行代碼添加到函數(shù)中,就會按預(yù)期檢索實體。public ICollection<Client> GetAllClients(){    var test = _dbContext.Configurations.ToList();    return _dbContext.Clients.ToList();}這對我來說毫無意義。我在這里錯過了什么?
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經(jīng)驗 獲得超0個贊

您可以使用 Include 方法指定要包含在查詢結(jié)果中的相關(guān)數(shù)據(jù)(預(yù)加載)。


看看下面的例子:


public ICollection<Client> GetAllClients()

{

    return _dbContext.Clients.Include(x => x.Configurations).ToList();

}

您可以查看MSDN 參考資料。



查看完整回答
反對 回復(fù) 2022-12-04
?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

相關(guān)的引用/集合屬性必須預(yù)先加載或顯式加載。您通常希望使用以下方式急切加載Include

var clients = await _context.Clients.Include(x => x.Configurations).ToListAsync();

或者,您可以延遲加載,但這通常不是一個好主意,因為它會導致 N+1 查詢問題(即您發(fā)出一個查詢,然后在迭代時對每個項目進行單獨的附加查詢,這顯然效率很低). 無論如何,延遲加載需要兩件事:

  1. 引用/集合屬性必須具有virtual關(guān)鍵字。EF 通過創(chuàng)建實體類的動態(tài)代理并覆蓋屬性 getter 來添加延遲加載功能。當然,覆蓋只能在虛擬機上進行。

  2. 您必須顯式添加延遲加載服務(wù):

    services.AddDbContext<MyContext>(o => o.UseLazyLoadingProxies()
        .UseSqlServer(connectionString));

它在您查詢配置時也有效,因為 EF 具有對象修復(fù)。換句話說,如果它之前已經(jīng)檢索到這些對象并將它們放在對象緩存中,它將自動填充相關(guān)的引用/集合屬性。否則,如果您不以其他方式加載關(guān)系,該屬性將保持為空。


查看完整回答
反對 回復(fù) 2022-12-04
  • 2 回答
  • 0 關(guān)注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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