Udostępnij za pośrednictwem


Instrukcje: kontrolowanie, ile jest pobieranych powiązanych danych

LoadWith Użyj metody , aby określić, które dane związane z głównym celem powinny być pobierane w tym samym czasie. Jeśli na przykład wiesz, że potrzebujesz informacji o zamówieniach klientów, możesz użyć LoadWith polecenia , aby upewnić się, że informacje o zamówieniu są pobierane w tym samym czasie co informacje o kliencie. Takie podejście powoduje tylko jedną podróż do bazy danych dla obu zestawów informacji.

Uwaga

Dane związane z głównym celem zapytania można pobrać, pobierając produkt krzyżowy jako jedną dużą projekcję, taką jak pobieranie zamówień w przypadku klientów docelowych. Jednak takie podejście często ma wady. Na przykład wyniki to tylko projekcje, a nie jednostki, które można zmienić i utrwały przez LINQ to SQL. Możesz też pobierać wiele danych, których nie potrzebujesz.

Przykład

W poniższym przykładzie wszystkie Orders elementy dla wszystkich Customers , którzy znajdują się w Londynie, są pobierane po wykonaniu zapytania. W związku z tym kolejny dostęp do Orders właściwości obiektu Customer nie powoduje wyzwolenia nowego zapytania bazy danych.

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Customer>(c => c.Orders);
db.LoadOptions = dlo;

var londonCustomers =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

foreach (var custObj in londonCustomers)
{
    Console.WriteLine(custObj.CustomerID);
}
Dim db As New Northwnd("c:\northwnd.mdf")

Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.LoadWith(Of Customer)(Function(c As Customer) c.Orders)
db.LoadOptions = dlo

Dim londonCustomers = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust

For Each custObj In londonCustomers
    Console.WriteLine(custObj.CustomerID)
Next

Zobacz też