Sdílet prostřednictvím


Postupy: Volání vložených funkcí definovaných uživatelem

I když můžete volat uživatelem definované funkce vložené, funkce zahrnuté v dotazu, jehož provádění je odloženo, se nespustí, dokud se dotaz nespustí. Další informace najdete v tématu Úvod k dotazům LINQ (C#).

Při volání stejné funkce mimo dotaz linQ to SQL vytvoří jednoduchý dotaz z výrazu volání metody. Následuje syntaxe SQL (parametr @p0 je vázán na konstantu předanou):

SELECT dbo.ReverseCustName(@p0)  

LINQ to SQL vytvoří následující:

string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")

Příklad

V následujícím dotazu LINQ to SQL můžete vidět vložené volání vygenerované uživatelem definované metody ReverseCustNamefunkce . Funkce se nespustí okamžitě, protože je odloženo spuštění dotazu. SQL vytvořený pro tento dotaz se přeloží na volání uživatelem definované funkce v databázi (viz kód SQL následující dotaz).

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]  

Viz také