Compartir a través de


Llamadas a métodos locales (LINQ to SQL)

Actualización: November 2007

Las llamadas a métodos locales son las que se ejecutan dentro del modelo de objetos. Las llamadas a métodos remotos son la que LINQ to SQL convierte a SQL y después transmite al motor de base de datos para su ejecución. Las llamadas a métodos locales son necesarias cuando LINQ to SQL no puede convertir una llamada a SQL. De lo contrario, se produce una excepción InvalidOperationException.

Ejemplo 1

En el ejemplo siguiente, se asigna una clase Order a la tabla Orders de la base de datos de ejemplo Northwind. Se ha agregado a la clase un método de instancia local.

En la consulta 1, el constructor de la clase Order se ejecuta localmente. En la consulta 2, si LINQ to SQL intentara convertir LocalInstanceMethod() a SQL, se produciría un error y se iniciaría una excepción InvalidOperationException. Pero, dado que LINQ to SQL proporciona compatibilidad con las llamadas a métodos locales, la consulta 2 no iniciará una excepción.

' 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 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 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
// 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)
    };
}

Vea también

Otros recursos

Información general (LINQ to SQL)