当实体在内部时,延迟加载不起作用

Cra*_*ran 4 c# entity-framework

当实体类是内部的时,是否可以强制实体框架延迟加载集合?所有代码均以代码优先和流畅的 API 编写。我有这样的情况:

internal class Order
{
   public int Id { get; set; }
   public ICollection<Operation> Operations { get; set; }
}

internal class Operation
{
   public int Id { get; set; }
   public int OrderId { get; set; }
   public Order Order { get; set; }
}

internal MyContext : DbContext
{
   internal DbSet<Order> Orders { get; set; }
   internal DbSet<Operation> Operations { get; set; }

   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
       modelBuilder.Entity<Operation>().HasRequired(x => x.Order)
                                       .WithMany(x => x.Operations)
                                       .HasForeignKey(x=>x.OrderId);
   }
}
Run Code Online (Sandbox Code Playgroud)

而且我不明白为什么实体框架不会延迟加载操作集合。我在上下文中延迟加载 true。有可能管理这个吗?

oct*_*ccl 5

恐怕这是不可能的,public类是 EF 创建代理类和启用延迟加载的必要条件。查看此msdn 页面以获取更多信息:

自定义数据类必须声明为具有公共访问权限。

  • 就是这样了?这个话题有什么解决方法吗?我不明白为什么 EF 团队会这样做。 (2认同)