【发布时间】:2016-03-17 21:26:13
【问题描述】:
context.Projects
.Include(x => x.Members) //List<Member> public class Member
.Include(x => x.Members.Select(z => z.City)) //public class City
.ToList();
从项目中选择
包括project.Members列表
包括每个project.Members.City
需要在结果中添加一些数据
context.Projects
.Include(x => x.Members)
.Include(x => x.Members.Select(z => z.City))
.Select(x => new {
Project = x,
Amount = 22
})
.ToList();
Project 属性已填充,但 Members 为空
问题 1 - 如何在 new { Project = x }
中包含 Project.Members下一个
context.Projects
.Include(x => x.Members) //List<Member>
.Include(x => x.Members.Select(z => z.City)) //City is navigation property
.Select(x => new {
Project = x,
Members = x.Members,
Amount = 22
})
.ToList();
Project 属性已填充,Members 已填充,但 Members[0].City 为空
问题 2 - 如何填写 Members[0].City
附言
实体框架 6
public class Project
{
public Guid Id { get; set; }
public string Name { get; set; }
public List<ProjectMember> Members { get; set; }
}
public class ProjectMember
{
public Guid ProjectId { get; set; }
public Project Project { get; set; }
public Guid CityId { get; set; }
public City City { get; set; }
}
附言
这项工作 - 但代码开销
context.Projects
.Include(x => x.Members) //List<Member>
.Include(x => x.Members.Select(z => z.City)) //City is navigation property
.Select(x => new {
Project = x,
Members = x.Members.Select(z => new {
Item = z,
City= z.City
}).ToList(),
Amount = 22
})
.ToList();
【问题讨论】:
-
这是 EF 6 还是 7?
-
你能展示你的项目类吗?
-
添加信息:EntityFramework 6 和部分类
-
您可以尝试将
.Include()移动到语句的末尾,例如.Include(x => x.Project.Members).Include(x => x.Project.Members).Select(z => z.City) -
Move or add to end = "查询的结果类型既不是EntityType也不是具有实体元素类型的CollectionType。只能为具有这些结果类型之一的查询指定包含路径。”
标签: c# entity-framework linq