ich wieder die folgenden zwei Klassen haben, die von meinem Test-Modell erzeugt werden:Lazy Loading in EF funktioniert nicht
public partial class House
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public House()
{
this.Persons = new HashSet<Person>();
}
public int id { get; set; }
public string street { get; set; }
public string city { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Person> Persons { get; set; }
}
public partial class Person
{
public int id { get; set; }
public string namen { get; set; }
public int house { get; set; }
public virtual House House1 { get; set; }
}
Im Konstruktor meines DbContext ich Lazy Loading-explizit aktivieren, was sollte nicht einmal sein erforderlich:
this.Configuration.LazyLoadingEnabled = true;
this.Configuration.ProxyCreationEnabled = true;
Später nenne ich eine Liste der Häuser:
YardEntities cx = new YardEntities();
IList<House> hl = cx.Houses.ToList<House>();
House h = hl[0];
///**************BREAKPOINT*******************///
Person g = h.Persons.First<Person>();
output = g.namen;
Nach dem deutlichen b reakpoint Ich habe erwartet, dass alle Personen mit den Häusern verbunden sind nicht geladen an diesem Punkt wegen Lazy Loading. Ich habe nicht auf eine einzelne Person zugegriffen, also warum sollten sie geladen werden? Sie werden jedoch geladen, weil mein Debugger mir alle Namensattribute anzeigt.
Kann jemand dieses Verhalten erklären? Warum funktioniert Lazy nicht?
ich denke, weil Sie eine .. cx.Houses.ToList() verwenden; mach keine toList() und du wirst keine Daten bekommen –
lordkain
Nein - das ist das offizielle Tutorial und es verwendet auch tolist() http://www.entityframeworktutorial.net/EntityFramework4.3/lazy-loading-with-dbcontext .aspx – David
um mich zu vergnügen, versuchen Sie ohne den Tolist – lordkain