Como: chamar funções embutidas definidas pelo usuário
Embora você possa chamar funções definidas pelo usuário embutidos, as funções que são incluídas em uma consulta cuja execução é adiada não são executadas até que a consulta. Para obter mais informações, consulte Introdução a Consultas de LINQ (C#).
Quando você chama a mesma função fora de uma consulta, o LINQ to SQL cria uma consulta simples na expressão de chamada de método. A seguir está a sintaxe do SQL (parâmetro @p0
é associado à constante passada dentro):
SELECT dbo.ReverseCustName(@p0)
O LINQ to SQL cria o seguinte:
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
Exemplo
Na seguinte consulta de LINQ to SQL, você pode ver uma chamada embutida para o método gerado de função definida pelo usuário ReverseCustName
. A função não é executada imediatamente porque a execução da consulta é adiada. O SQL compilado para esta consulta converte a uma chamada para a função definida pelo usuário na base de dados (consulte o código SQL seguir a 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]