有没有办法篡改 DbContext 以便在查询中请求实体时自动加载特定的导航属性?(没有延迟加载)。
实体框架 5
例子:
var SupremeEmployee = context.Employees.FirstOrDefault(x => x.EmployeeId == 42);
并且返回的模型将返回预先填充了“部门”导航属性。
有没有办法篡改 DbContext 以便在查询中请求实体时自动加载特定的导航属性?(没有延迟加载)。
实体框架 5
例子:
var SupremeEmployee = context.Employees.FirstOrDefault(x => x.EmployeeId == 42);
并且返回的模型将返回预先填充了“部门”导航属性。
取决于你的模型是什么样子的。如果您使用接口或继承,则可以向 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);
}
}