簡體   English   中英

使用實體框架返回所有相關實體

[英]Return all related entities with Entity Framework

我是第一次玩實體框架。 我正在編寫以下簡單查詢:

public List<Request> GetResult(string code)
{
    List<Request> requests = new List<Request>();

    using (var db = new Context())
    {
        requests = (from c in db.Requests where c.Code == code select c).ToList();
    }

    return requests;
}

Request對象有一些相關實體,例如與Request表具有Request關系的Results表。 但是它們都返回null。

如何使用Entity Framework查詢並返回一個實體及其所有相關實體?

TIA

使用預先加載的單個查詢

db.Requests.Where(req => req.Code == code)
    .Include(req => req.Results) // Joining is performed here
    .Include(req => req.SomeOtherProperty)
    .ToList()

使用顯式加載的多個查詢

// Hits the database once.
var requests = db.Requests.Where(req => req.Code == code).ToList();
var requestIDs = requests.Select(req => req.ID);
// Hits the database another time to load your Results property.
db.Results.Where(res => requestIDs.Contains(res.RequestID)).Load(); 

如果啟用了延遲加載,則每次訪問“ Request列表的“ Results屬性時,都會對數據庫執行查詢以為您加載它,這可能會導致N + 1問題。 延遲加載在EntityFramework Core上尚不可用。

如果要選擇要加載的對象,請使用

db.Entry(Requests).Reference(p => p.Code).Load(); 

如果要在datacontext構造函數集上自動全部加載

this.Configuration.LazyLoadingEnabled = true; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM