2017-02-13 3 views
3

Es ist möglich, Entitätsframework auf Lazy loading collection zu erzwingen, wenn die Entitätsklasse intern ist? Der gesamte Code ist in Code und fließende API geschrieben. Ich habe eine Situation wie folgt:Wenn die Entität intern ist, funktioniert das verzögerte Laden nicht

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); 
    } 
} 

Und ich kann nicht herausfinden, warum Entity Framework nicht lazy loading Operations Collection. Ich habe träge Laden im Zusammenhang wahr. Es ist möglich, das zu verwalten?

Antwort

4

Ich fürchte, das ist nicht möglich, public Klassen ist eine Voraussetzung für EF Proxy-Klassen erstellen und Lazy Loading zu ermöglichen. Werfen Sie einen Blick auf diese msdn page für weitere Informationen:

Eine benutzerdefinierte Datenklasse muss mit öffentlichem Zugriff deklariert werden.

+0

Also das ist es? Irgendein Spaziergang in diesem Thema? Ich verstehe nicht, warum das EF-Team das richtig macht. – CrazyBaran

+0

Da Sie Ihr Entitätsmodell in Ihrer benutzerdefinierten Assembly definieren, verwendet EF die Reflektion, um Ihre Modellklassen zu erhalten und Proxyklassen zu erstellen, die das Lazy Loading ermöglichen. Es ist wie ein Wrapper Ihrer Klassen (also von Ihren Entitäten geerbt) es muss "öffentlich" sein – octavioccl

+1

Also muss ich vielleicht InternalVisibleTo EntityFramework geben? – CrazyBaran

Verwandte Themen