0
鉴于(简体)对象下的模式,我需要加载对应于给定Person
的Schedule
对象,但只加载选择Class
ES该人正在采取。实体框架投影:Materialise的补充名单
我完成了使用投影,它工作正常(除了EF分析器抱怨太多的联接)。
现在我有一个新的要求,也加载。我希望注释掉的代码//FunFacts = s.Person.FunFacts,
能够做到这一点。但是,它没有。
我可以在上下文仍处于活动状态时访问schedule.FunFacts
来实现我的目标。但是,这会创建数据库的额外往返行程。
问题:我是否可以修改我的投影以返回schedule.FunFacts
而不诉诸懒惰通过代理加载它?
对象模型(简体)
public class Schedule
{
public int Id { get; set; }
public Person Person { get; set; }
public List<Class> Classes { get; set; }
}
public class Class
{
public int Id { get; set; }
public int Name { get; set; }
}
public class Person
{
public int Id { get; set; }
public Schedule Schedule { get; set; }
public List<FunFact> FunFacts { get; set; }
}
public class FunFact
{
public int Id { get; set; }
public string Name { get; set; }
public string Text { get; set; }
}
物化代码
var desiredPersonId = 42;
var classIds = new List<int> { 2, 3, 5, 7, 11 };
var schedule = (from sFilter in
(from s in ctx.Schedules
where s.Person.Id == desiredPersonId
select new
{
Schedule = s,
Person = s.Person,
//FunFacts = s.Person.FunFacts,
Class = from c in s.Classes where classIds.Contains(c.Id) select c
}
).AsEnumerable()
select sFilter.Schedule).FirstOrDefault();