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