我首先将 EF 模型与 POCO 实体和自定义 DbContexts 一起使用。我的问题是设置LazyLoadingEnabled=false
不会影响任何东西,导航属性仍然加载。下面是我的简化示例。
实体程序。一个程序可以是其他程序的一部分:
namespace Domain.Entities
{
using System;
using System.Collections.Generic;
public partial class Program
{
public Program()
{
this.Programs = new HashSet<Program>();
}
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public System.DateTime StartDate { get; set; }
public System.DateTime EndDate { get; set; }
public Nullable<int> ProgramId { get; set; }
public virtual ICollection<Program> Programs { get; set; }
public virtual Program OwnerProgram { get; set; }
}
}
数据库上下文:
namespace Infrastructure.Model
{
public class ProgramContext : DbContext
{
public ProgramContext()
: base("name=MyContainer")
{
Configuration.LazyLoadingEnabled = false;
}
public DbSet<Program> Programs { get; set; }
}
}
这是我的使用方法:
private ProgramContext _dbContext = new ProgramContext();
// GET api/program
public IEnumerable<Program> GetPrograms()
{
List<Program> list = _dbContext.Programs.ToList();
return list;
}
对于上面的示例,EF 仍然加载 Program 类的 Programs 和 OwnerProgram 属性。我尝试删除虚拟关键字,禁用代理创建,并LazyLoadingEnabled=false
在模型本身上验证了这一点。
我错过了什么吗?