linq to sql loadwith-vs associatewith
was ist der Unterschied zwischen loadwith-und associatewith. Von den Artikeln, die ich gelesen es scheint, dass loadwith-laden neben Daten (z.B. alle Bestellungen für die Kunden). Während AssociateWith wird verwendet, um Daten zu filtern.
Ist, dass ein korrektes Verständnis? Auch wird es schön, wenn jemand erklären kann, dies mit einem Beispiel basiert Erklärung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
LoadWith
verwendet, um eine eifrig laden einer Vereinigung im Gegensatz zu den Standard - lazy load.Normalerweise, Verbände geladen sind, die erste Zeit, die Sie referenzieren. Das bedeutet, wenn Sie 100
Order
Instanzen, und dann etwas tun, mit jedem IhreDetails
sind Sie tatsächlich durchführen 101SELECT
Vorgänge auf der Datenbank. Auf der anderen Seite, wenn dieLoadOptions
angebenLoadWith<Order>(o => o.Details)
, dann ist alles getan in einer einzigenSELECT
mit einem zusätzlichenJOIN
.AssociateWith
nicht haben keine Auswirkung auf wenn der Verein geladen, nur was geladen wird. Es fügt eineWHERE
- Klausel jedes mal, wenn Sie laden einen Verein.Wie Sie sagen,
AssociateWith
wird verwendet, um automatisch filtern von Daten. In der Regel würden Sie dies verwenden, wenn Sie wissen, dass ein Verein eine sehr große Anzahl von Elementen, und Sie brauchen nur eine bestimmte Teilmenge von Ihnen. Wieder, es ist vor allem ein performance-Optimierung, nur eine andere Art.Ja dein Verständnis ist korrekt; AssociateWith filtern von Daten, bevor Abfragen in der Erwägung, dass LoadWith gibt die zugehörigen Objekte in der Abfrage. Der Grund LoadWith ist, so dass Sie zurückkehren können die zugehörigen Objekte in 1 einzigen Abfrage. Sonst extra db-Aufrufe erfolgen in der Zeit, wenn Sie Durchlaufen Ihre zugehörigen Objekte.
Probieren Sie verschiedene Beispiele, die Sie sich selbst und werfen Sie einen Blick auf die generierte SQL durch Profiler oder anderen logger. Denken Sie daran, dass diese Optionen eingestellt werden müssen, um auf Ihre DataContext, bevor Sie Fragen.
Haben Sie einen Blick auf die Beispiele in den links unten (MSDN). Ich habe gerade kopiert den Beispielen, die Sie verwenden es.
LoadWith
AssociateWith