DbContext中的自动预先加载导航属性

时间:2012-12-04 01:21:53

标签: entity-framework

有没有办法篡改DbContext,以便在查询中请求实体时自动加载特定的Navigation属性? (没有延迟加载)。

  

实体框架5

示例:

var supremeEmployee = context.Employees.FirstOrDefault(x => x.EmployeeId == 42);

并且返回的模型将预先填充“Department”导航属性。

1 个答案:

答案 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);
        }
    }