Partager via


Appels de méthodes locaux

Un appel de méthode local est un appel exécuté dans le modèle objet. Un appel de méthode distant est un appel que LINQ to SQL traduit en SQL et transmet au moteur de base de données pour exécution. Les appels de méthode locaux sont nécessaires quand LINQ to SQL ne peut pas traduire l’appel en SQL. Sinon, une exception InvalidOperationException est levée.

Exemple 1

Dans l'exemple suivant, une classe Order est mappée à la table Orders dans l'exemple de base de données Northwind. Une méthode d'instance locale a été ajoutée à la classe.

Dans Query1, le constructeur de la classe Order est exécuté localement. Dans Query 2, si LINQ to SQL a essayé de traduire LocalInstanceMethod() en SQL, la tentative va échouer et une exception InvalidOperationException sera levée. Cependant, comme LINQ to SQL fournit la prise en charge pour les appels de méthode locaux, Query2 ne lèvera pas d’exception.

// 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

Voir aussi