Anvisningar: Anropa användardefinierade funktioner infogade
Även om du kan anropa användardefinierade funktioner infogade körs inte funktioner som ingår i en fråga vars körning skjuts upp förrän frågan körs. Mer information finns i Introduktion till LINQ-frågor (C#).
När du anropar samma funktion utanför en fråga skapar LINQ till SQL en enkel fråga från metodens anropsuttryck. Följande är SQL-syntaxen (parametern @p0
är bunden till konstanten som skickas in):
SELECT dbo.ReverseCustName(@p0)
LINQ till SQL skapar följande:
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
Exempel
I följande LINQ till SQL-fråga kan du se ett infogat anrop till den genererade användardefinierade funktionsmetoden ReverseCustName
. Funktionen körs inte omedelbart eftersom frågekörningen skjuts upp. DEN SQL som skapats för den här frågan översätts till ett anrop till den användardefinierade funktionen i databasen (se SQL-koden efter frågan).
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]