2013-02-09 4 views
6

Was ist der Effekt von nicht, der virtuelle Navigationseigenschaften für Entity Framework (v4) -Entitäten kennzeichnet?Virtuelle Eigenschaften des Entitäts-Frameworks

Wenn ich nicht lazy loading, aber vernachlässigen, richtig eifrig laden, was passiert beim Zugriff auf die (nicht geladene) Eigenschaft?

Würden andere Auswirkungen außerhalb des Lazy Loads auftreten, oder ist dies das Hauptmerkmal, das virtuelle Navigationseigenschaften erfordert?

Antwort

7

Es gibt zwei Effekte. Einer ist auf lazy loading, was einfach nicht funktioniert, wenn die Eigenschaft nicht virtual ist. Aber Lazy Loading ist nicht immer etwas, was Sie wollen.

Die zweite ist Änderungserkennung. Wenn Sie reine POCOs verwenden oder Proxies verwenden, aber nicht die Eigenschaften virtual angeben, wird die Änderungserkennung komplizierter.

Sie können mehr über die Änderungserkennung here erfahren.

0

Wenn Sie sich fragen, ob das verzögerte Laden mit POCO-Objekten unterstützt wird, dann werden Sie sich sicher freuen, dass Sie auch Deferred Loading mit POCO erhalten können.

Es gibt zwei Dinge, die Sie tun müssen, um verzögertes Laden Unterstützung bei POCO Einheiten zu erhalten:

  1. die Eigenschaft erklären, dass Sie faul als virtuelle laden möchten. Diese Eigenschaften können ein beliebiger Sammlungstyp sein, der ICollection implementiert, oder sie können eine Referenz darstellen, die eine 1/0..1-Beziehung darstellt.

  2. verzögertes Laden auf dem MSDN's "POCO in the Entity Framework" post

  3. Kontext aktivieren

See.