Практическое руководство. Встроенный вызов пользовательских функций
Пользовательские функции можно вызывать из строки кода, однако функции, включенные в запрос, выполнение которого отложено, выполняются только одновременно с запросом. Дополнительные сведения см. в разделе Введение в запросы LINQ (C#).
При вызове той же функции за пределами запроса LINQ to SQL создает простой запрос из выражения вызова метода. Ниже показан синтаксис SQL (параметр @p0
привязан к передаваемой константе).
SELECT dbo.ReverseCustName(@p0)
LINQ to SQL создает следующее:
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
Пример
В следующем запросе LINQ to SQL можно увидеть встроенный вызов созданной определяемой пользователем функции ReverseCustName
. Функция не выполняется немедленно, поскольку выполнение запроса отложено. Код SQL, созданный для этого запроса, преобразуется в вызов пользовательской функции в базе данных (см. код SQL, расположенный после запроса).
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]