![](/img/trans.png)
[英]Entity Framework Core 2.0.1 Eager Loading on all nested related entities
[英]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.