Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Un appel de méthode local est un appel exécuté dans le modèle objet. Un appel de méthode distante est un appel que LINQ to SQL traduit en SQL et transmet au moteur de base de données pour l’exécution. Les appels de méthode locale sont nécessaires lorsque LINQ to SQL ne peut pas traduire l’appel en SQL. Dans le cas contraire, un InvalidOperationException est déclenché.
Exemple 1
Dans l’exemple suivant, la classe Order est associée à la table Orders dans la base de données d'exemple Northwind. Une méthode d’instance locale a été ajoutée à la classe.
Dans la requête 1, le constructeur de la Order classe est exécuté localement. Dans la requête 2, si LINQ to SQL essayait de traduire LocalInstanceMethod() en SQL, la tentative échouerait et une InvalidOperationException exception se produirait. Toutefois, étant donné que LINQ to SQL fournit la prise en charge des appels de méthode locaux, Query2 ne lève 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