Dela via


Anvisningar: Kontrollera hur mycket relaterade data som hämtas

LoadWith Använd metoden för att ange vilka data som är relaterade till huvudmålet ska hämtas samtidigt. Om du till exempel vet att du behöver information om kundernas beställningar kan du använda LoadWith för att se till att orderinformationen hämtas samtidigt som kundinformationen. Den här metoden resulterar bara i en resa till databasen för båda uppsättningarna med information.

Kommentar

Du kan hämta data som är relaterade till huvudmålet för din fråga genom att hämta en korsprodukt som en stor projektion, till exempel att hämta beställningar när du riktar in dig på kunder. Men detta tillvägagångssätt har ofta nackdelar. Resultatet är till exempel bara projektioner och inte entiteter som kan ändras och bevaras av LINQ till SQL. Och du kan hämta massor av data som du inte behöver.

Exempel

I följande exempel hämtas alla Orders för alla Customers som finns i London när frågan körs. Därför utlöser efterföljande åtkomst till Orders egenskapen på ett Customer objekt inte en ny databasfråga.

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

Se även