Procedimiento para llamar a funciones alineadas definidas por el usuario
Aunque se puede llamar a funciones alineadas 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, vea Introducción a las consultas LINQ (C#).
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:
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
Ejemplo
En la siguiente consulta de LINQ to SQL se puede ver una llamada alineada al método ReverseCustName
de la función definida por el usuario que se ha generado. La función no se ejecuta inmediatamente, porque la ejecución de la consulta está diferida. El código SQL compilado 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).
var custQuery =
from cust in db.Customers
select new {cust.ContactName, Title =
db.ReverseCustName(cust.ContactTitle)};
Dim custQuery = _
From cust In db.Customers _
Select cust.ContactName, Title = _
db.ReverseCustName(cust.ContactTitle)
SELECT [t0].[ContactName],
dbo.ReverseCustName([t0].[ContactTitle]) AS [Title]
FROM [Customers] AS [t0]