Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Una llamada al método local es una que se ejecuta dentro del modelo de objetos. Una llamada a método remoto es aquella que LINQ to SQL traduce a SQL y transmite al motor de base de datos para su ejecución. Las llamadas de método local son necesarias cuando LINQ to SQL no puede traducir la llamada a SQL. De lo contrario, se produce una excepción InvalidOperationException.
Ejemplo 1
En el ejemplo siguiente, la clase Order se mapea a la tabla Orders de la base de datos de ejemplo Northwind. Se ha agregado un método de instancia local a la clase .
En la consulta 1, el constructor de la Order clase se ejecuta localmente. En la consulta 2, si LINQ to SQL intentó traducirse LocalInstanceMethod()en SQL, se produciría un error en el intento y se produciría una InvalidOperationException excepción. Pero dado que LINQ to SQL proporciona compatibilidad con llamadas a métodos locales, Query2 no producirá una excepción.
// 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