Entity Framework-Referenzen werden nicht automatisch geladen

ado.net c# entity-framework

Frage

Im ADO.Net Entity Framework habe ich ein Objekt, das 4 Verweise auf andere Objekte hat. Wenn ich diese Verweise abfrage, werden aus irgendeinem Grund zwei davon automatisch geladen (wie erwartet), und zwei davon geben immer null zurück.

Seltsamerweise, wenn ich manuell nach den Referenzen frage, ob sie geladen werden sollen, laden sie nur Dandy.

Als Beispiel:

if (account.HoldingEntity == null && 
    account.HoldingEntityReference.EntityKey != null) {

    account.HoldingEntityReference.Load();
    account.HoldingEntity = account.HoldingEntityReference.Value;
}

Wenn ich zum ersten Mal die HoldingEntity überprüfe, ist sie immer null, jedoch gibt die Last die HoldingEntity ohne Probleme zurück.

Irgendwelche Hinweise?

Vielen Dank!

Akzeptierte Antwort

Mit ADO.NET-Entitäten müssen Sie angeben, welche Entitäten Sie automatisch mit Include laden möchten

Dim entity = (From e in db.Entities.Include("SubEntity"))

Beliebte Antwort

Wie andere schon gesagt haben, müssen Sie .Include() in v1 .Include() , um den Aufruf von .Load() zu vermeiden.

In 4.0 können Sie festlegen DeferredLoadingEnable d auf ObjectContext (man denke ich , dass wir diesen Namen in die geeignetere verändern LazyLoadingEnabled rechtzeitig für Beta2).

Warum werden 2 Beziehungen trotzdem geladen? Dies ist wahrscheinlich ein Nebeneffekt von so genannten Relationship Fix-Ups.

Wenn sich zwei verwandte Entitäten im selben Kontext befinden, werden sie automatisch fixiert, damit sie aufeinander verweisen. Also , wenn (wie ich vermute) 2 der 4 Einheiten sind bereits in Ihrem Kontext, wenn Sie die Abfrage tun, werden Sie in einer Situation kommen , wo zwei Ihre Beziehungen geladen werden, auch wenn Sie nicht angerufen .Include() oder .Load() .

Hoffe das hilft

Prost Alex



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum