我正在尝试构建一个查询来获取所有 Tour 对象的列表,并预加载每个 tour 的最新版本(最新版本是最近创建的)。请参阅下面的模型。每个 Tour
可以有多个关联的 TourVersion
对象
class Tour {
public Guid TourId { get; set; }
public virtual TourVersion CurrentTourVersion { get; set; }
// Other properties etc.
}
class TourVersion {
public Guid TourId { get; set; }
public DateTime CreatedOn { get; set; }
// Other properties etc.
}
我能够完成我想要为每个 Tour
运行另一个查询的任务:
var tours = context.Tours.ToList();
foreach (var tour in tours)
{
tour.CurrentTourVersion = context.TourVersions
.Where(t => t.TourId == tour.Id)
// ToUnixTime is a custom extension method that returns a long
.OrderByDescending(t => t.CreatedOn.ToUnixTime())
.FirstOrDefault();
}
我希望能够在单个查询中完成此操作。有什么建议吗?
最佳答案
Entity Framework 会自动为您加载相关实体,直到上下文处于事件状态。您通过
获得旅行列表var tours = dbContext.Tours.ToList();
例如,您可以通过调用获取旅游版本
tours[i].CurrentTourVersion;
除非 dbContext 在您获得旅游版本之前在某个地方被处理,否则您将需要预先加载(请参阅 here)。这样您就可以获取并保留相关对象。
var tours = dbContext.Tours.Include(obj=>obj.CurrentTourVersion).ToList();
关于c# - Entity Framework 包括来自一对多关系的单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40409133/