Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Una chiamata al metodo locale è una chiamata eseguita all'interno del modello a oggetti. Una chiamata al metodo remoto è una che LINQ to SQL converte in SQL e trasmette al motore di database per l'esecuzione. Le chiamate ai metodi locali sono necessarie quando LINQ to SQL non è in grado di convertire la chiamata in SQL. In caso contrario, verrà generata un'eccezione InvalidOperationException.
Esempio 1
Nell'esempio seguente viene eseguito il mapping di una Order classe alla tabella Orders nel database di esempio Northwind. Alla classe è stato aggiunto un metodo di istanza locale.
In Query 1 il costruttore per la Order classe viene eseguito in locale. In Query 2, se LINQ to SQL ha tentato di eseguire la conversione LocalInstanceMethod()in SQL, il tentativo avrà esito negativo e verrà generata un'eccezione InvalidOperationException . Tuttavia, poiché LINQ to SQL fornisce supporto per le chiamate ai metodi locali, Query2 non genererà un'eccezione.
// 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