Cómo: Llamar a funciones inline definidas por el usuario (LINQ to SQL)
Actualización: November 2007
Aunque se puede llamar a funciones inline definidas por el usuario, las funciones que se incluyen en una consulta cuya ejecución está diferida no se ejecutan hasta que se ejecute la consulta. Para obtener más información, consulte Introducción a consultas con LINQ.
Al llamar a la misma función fuera de una consulta, LINQ to SQL crea una consulta simple a partir de la expresión de llamada al método. A continuación se muestra la sintaxis de SQL (el parámetro @p0 se enlaza a la constante pasada):
SELECT dbo.ReverseCustName(@p0)
LINQ to SQL crea lo siguiente:
Dim str As String = db.ReverseCustName("LINQ to SQL")
string str = db.ReverseCustName("LINQ to SQL");
Ejemplo
En la siguiente consulta LINQ to SQL se puede ver una llamada inline al método de la función definida por el usuario ReverseCustName que se ha generado. La función no se ejecuta inmediatamente, porque la ejecución de la consulta está diferida. El código SQL generado para esta consulta realiza la conversión a una llamada a la función definida por el usuario en la base de datos (vea el código SQL que se encuentra después de la consulta).
Dim custQuery = _
From cust In db.Customers _
Select cust.ContactName, Title = _
db.ReverseCustName(cust.ContactTitle)
var custQuery =
from cust in db.Customers
select new {cust.ContactName, Title =
db.ReverseCustName(cust.ContactTitle)};
SELECT [t0].[ContactName],
dbo.ReverseCustName([t0].[ContactTitle]) AS [Title]
FROM [Customers] AS [t0]