Delen via


Procedure: bepalen hoeveel gerelateerde gegevens worden opgehaald

Gebruik de LoadWith methode om op te geven welke gegevens met betrekking tot uw hoofddoel tegelijkertijd moeten worden opgehaald. Als u bijvoorbeeld weet dat u informatie nodig hebt over de orders van klanten, kunt u ervoor LoadWith zorgen dat de ordergegevens op hetzelfde moment worden opgehaald als de klantgegevens. Deze methode resulteert in slechts één reis naar de database voor beide gegevenssets.

Notitie

U kunt gegevens ophalen die betrekking hebben op het belangrijkste doel van uw query door een crossproduct op te halen als één grote projectie, zoals het ophalen van orders wanneer u klanten target. Maar deze benadering heeft vaak nadelen. De resultaten zijn bijvoorbeeld alleen projecties en niet entiteiten die kunnen worden gewijzigd en persistent gemaakt door LINQ in SQL. En u kunt veel gegevens ophalen die u niet nodig hebt.

Opmerking

In het volgende voorbeeld worden alle Orders items die Customers zich in Londen bevinden, opgehaald wanneer de query wordt uitgevoerd. Als gevolg hiervan activeert opeenvolgende toegang tot de Orders eigenschap op een Customer object geen nieuwe databasequery.

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

Zie ook