【发布时间】:2014-07-24 12:51:20
【问题描述】:
我不确定我的方法是错误的,或者这是一种默认行为,但它没有按我预期的方式工作......
这里有两个示例类...
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Department Department { get; set; }
}
第二个是部门
public class Department
{
public string Name { get; set; }
public List<Person> People { get; set; }
}
上下文配置
public MyDbContext() : base("DefaultConnection")
{
this.Configuration.ProxyCreationEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
}
public DbSet<Person> People { get; set; }
public DbSet<Department> Departments { get; set; }
我正在尝试加载姓氏来自“史密斯”的人
var foundPeople
= context
.people
.Where(p => p.LastName == "Smith");
上面的查询加载 foundPeople 只有 FirstName 和 LastName 没有 Department 对象。这是一个正确的行为,因为我的 LazyLoading 已关闭。这也是意料之中的。
现在在另一个带有 Eager loading Department 的查询中,
var foundPeople
= context
.people
.Where(p => p.LastName == "Smith")
.Include(p => p.Department);
上面的查询加载 foundPeople 的 FirstName、LastName、Department 的 Department->Name 以及 Deparment->People(该部门的所有人,我不想要,我只想加载第一级 Included 属性。
我不知道这是有意的行为还是我犯了一些错误。
有没有办法只加载第一级包含的属性,而不是完整的图表或所有级别的包含属性。
【问题讨论】:
标签: entity-framework entity-framework-6.1