Delen via


Lokale methode-aanroepen

Een lokale methode-aanroep is een aanroep die wordt uitgevoerd in het objectmodel. Een aanroep van een externe methode is een aanroep die LINQ naar SQL vertaalt naar SQL en verzendt naar de database-engine voor uitvoering. Lokale methode-aanroepen zijn nodig wanneer LINQ naar SQL de aanroep niet kan omzetten in SQL. Anders wordt er een InvalidOperationException gegooid.

Voorbeeld 1

In het volgende voorbeeld wordt een Order klasse toegewezen aan de tabel Orders in de voorbeelddatabase Northwind. Er is een lokale instantiemethode toegevoegd aan de klasse.

In Query 1 wordt de constructor voor de Order klasse lokaal uitgevoerd. Als LINQ naar SQL in Query 2 probeert te vertalen LocalInstanceMethod()naar SQL, mislukt de poging en wordt er een InvalidOperationException uitzondering gegenereerd. Maar omdat LINQ naar SQL ondersteuning biedt voor lokale methodeaanroepen, genereert Query2 geen uitzondering.

// Query 1.
var q1 =
    from ord in db.Orders
    where ord.EmployeeID == 9
    select ord;

foreach (var ordObj in q1)
{
    Console.WriteLine("{0}, {1}", ordObj.OrderID,
        ordObj.ShipVia.Value);
}
' Query 1.
Dim q0 = _
    From ord In db.Orders _
    Where ord.EmployeeID = 9 _
    Select ord

For Each ordObj In q0
    Console.WriteLine("{0}, {1}", ordObj.OrderID, _
        ordObj.ShipVia.Value)
Next
// Query 2.
public int LocalInstanceMethod(int x)
{
    return x + 1;
}

void q2()
{
    var q2 =
    from ord in db.Orders
    where ord.EmployeeID == 9
    select new
    {
        member0 = ord.OrderID,
        member1 = ord.LocalInstanceMethod(ord.ShipVia.Value)
    };
}
' Query 2.
Public Function LocalInstanceMethod(ByVal x As Integer) As Integer
    Return x + 1
End Function

Sub q2()
    Dim db As New Northwnd("")
    Dim q2 = _
    From ord In db.Orders _
    Where ord.EmployeeID = 9 _
    Select member0 = ord.OrderID, member1 = ord.LocalInstanceMethod(ord.ShipVia.Value)
End Sub

Zie ook