EF 6.1.3 延迟加载不起作用

EF 6.1.3 Lazy loading not working

我正在尝试获取单个员工记录,但查看它显示的诊断工具 Entity Framework 正在执行加载整个数据库的大量查询。延迟加载已启用,我正在使用 publicvirtual 关键字,所以我认为这不是问题所在。有什么我遗漏的吗,Employee 记录的导航属性不应该加载。

服务:

return _employeeRepo.GetEmployee(sid);

存储库:

public Employee GetEmployee(string sid)
    {
        Employee employee = Context.Employees.SingleOrDefault(e => e.SID == sid);

        return employee != null ? employee.ToDomain() : null;
    }

员工模型:

public class Employee
{
    ...
    public virtual ICollection<Address> Addresses { get; set; }
    public virtual ICollection<Disability> Disabilities { get; set; }
    ...
    public virtual Bureau Bureau { get; set; }
    public virtual Division Division { get; set; }
    ...

    public Domain.Models.Employee ToDomain()
    {
        return Mapper.Map<Domain.Models.Employee>(this);
    }
}

上下文:

public class SqlContext : DbContext
{
    public SqlContext() : base("SqlContext")
    {
        Database.SetInitializer<SqlContext>(null);
    }

    public virtual DbSet<EfModels.Address> Addresses { get; set; }
    public virtual DbSet<EfModels.Bureau> Bureaus { get; set; }
    public virtual DbSet<EfModels.Disability> Disabilities { get; set; }
    public virtual DbSet<EfModels.Division> Divisions { get; set; }
    public virtual DbSet<EfModels.Employee> Employees { get; set; }
}

问题出在您的制图工具 (AutoMapper) 上。

当您调用 employee.ToDomain() 时,正在访问您实体的导航属性,导致 EF 延迟加载表。