[英]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.