有没有办法篡改DbContext,以便在查询中请求实体时自动加载特定的Navigation属性? (没有延迟加载)。
实体框架5
示例:
var supremeEmployee = context.Employees.FirstOrDefault(x => x.EmployeeId == 42);
并且返回的模型将预先填充“Department”导航属性。
答案 0 :(得分:1)
取决于您的模型的样子。如果您正在使用接口或继承,则可以向DbContext类添加一个函数,该函数对该类型的通用约束始终包含导航属性。
根据我的经验,虽然你通常不会这样做,但表现明智。我更喜欢将匿名类型加载到我现在需要的字段中。
以最基本的方式,您可以这样做:
public class Department
{
public int Id { get; set; }
}
public class Employee
{
public int Id { get; set; }
public Department Department { get; set; }
}
public class MyContext : DbContext
{
protected DbSet<Employee> Employees { get; set; }
public IQueryable<Employee> LoadEmployees()
{
return Employees.Include(p => p.Department);
}
}