Поделиться через


Практическое руководство. Встроенный вызов пользовательских функций

Пользовательские функции можно вызывать из строки кода, однако функции, включенные в запрос, выполнение которого отложено, выполняются только одновременно с запросом. Дополнительные сведения см. в разделе Введение в запросы 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]  

См. также