我不确定我正在以错误的方式接近,或者这是一种默认行为,但它没有按照我期望的方式工作......
这是两个示例类...
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 属性。
我不知道这是有意的行为还是我犯了一些错误。
有没有办法只加载第一级包含的属性,而不是完整的图表或所有级别的包含属性。