0

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

实体框架 5

例子:

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

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

4

1 回答 1

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);
        }
    }
于 2012-12-04T01:24:50.183 回答