C# 当实体为内部时,延迟加载不起作用

C# 当实体为内部时,延迟加载不起作用,c#,entity-framework,C#,Entity Framework,当实体类为内部时,是否可以强制实体框架延迟加载集合?所有代码都是以代码优先和fluent API编写的。我有这样的情况: internal class Order { public int Id { get; set; } public ICollection<Operation> Operations { get; set; } } internal class Operation { public int Id { get; set; } public

当实体类为内部时,是否可以强制实体框架延迟加载集合?所有代码都是以代码优先和fluent 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);
   }
}
内部类顺序
{
公共int Id{get;set;}
公共ICollection操作{get;set;}
}
内部类操作
{
公共int Id{get;set;}
公共int-OrderId{get;set;}
公共秩序{get;set;}
}
内部MyContext:DbContext
{
内部DbSet命令{get;set;}
内部DbSet操作{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(x=>x.Order)
.WithMany(x=>x.Operations)
.HasForeignKey(x=>x.OrderId);
}
}

我不明白为什么实体框架不延迟加载操作集合。我在上下文中有真正的延迟加载。有可能做到这一点吗

恐怕这是不可能的,
public
类是EF创建代理类和启用延迟加载的要求。有关更多信息,请查看此链接:

必须使用公共访问权限声明自定义数据类


就这样?关于这个话题有没有旁白?我不明白为什么EF团队会这样做。因为您在自定义程序集中定义实体模型,EF肯定会使用反射来获取您的模型类并创建代理类,这些代理类支持延迟加载,它就像类的包装器(从您的实体继承),这就是为什么它需要是
公共的
,所以也许我需要为EntityFramework提供InternalVisibleTo?很抱歉,但恐怕这不存在:)EF4对
内部
类的延迟加载没有问题(对于db优先);但突然间,EF6需要
public
。这是非常令人失望的。