Hat das virtual
Schlüsselwort eine Auswirkung auf die Eigenschaften in EF Code First?. Kann jemand alle seine Auswirkungen in verschiedenen Situationen beschreiben?
Ich weiß zum Beispiel, dass es das verzögerte Laden steuern kann. Wenn Sie das virtuelle Schlüsselwort für eine ICollection / Eins-zu-Viele-Beziehungseigenschaft verwenden, wird es standardmäßig verzögert geladen. Wenn Sie das virtuelle Schlüsselwort weglassen, wird es dies auch tun eifrig geladen sein.
Welche anderen Auswirkungen kann ein virtual
Keyword in EF mit POCO-Entitäten haben? Sollte ich es standardmäßig für virtual
alle meine Eigenschaften verwenden oder standardmäßig nicht verwenden?
quelle
public virtual byte[] bigData { get; set; }
" faul laden?.Select(a=>new { fields you want })
.Dieses virtuelle Schlüsselwort bezieht sich auf das Thema Laden von Daten aus dem Entity Framework (verzögertes Laden, eifriges Laden und explizites Laden).
Sie sollten das virtuelle Schlüsselwort verwenden, wenn Sie Daten mit verzögertem Laden laden möchten.
Lazy Loading ist der Prozess, bei dem eine Entität oder Sammlung von Entitäten beim ersten Zugriff automatisch aus der Datenbank geladen wird.
Wenn Sie beispielsweise die unten definierte Blog-Entitätsklasse verwenden, werden die zugehörigen Posts beim ersten Zugriff auf die Navigationseigenschaft "Posts" geladen:
Das verzögerte Laden der Posts-Sammlung kann deaktiviert werden, indem die Posts-Eigenschaft nicht virtuell gemacht wird.
Wenn das verzögerte Laden deaktiviert ist, kann das Laden der Posts-Sammlung weiterhin durch eifriges Laden (mithilfe der Include-Methode) oder explizites Laden verwandter Entitäten (mithilfe der Load-Methode) erreicht werden.
Eifriges Laden:
Explizites Laden:
quelle
Include()
.