Procédure : Appeler des fonctions inline définies par l’utilisateur
Bien que vous puissiez appeler des fonctions inline définies par l'utilisateur, les fonctions incluses dans une requête dont l'exécution est différée ne sont pas exécutées tant que la requête n'est pas exécutée. Pour plus d’informations, consultez Introduction aux requêtes LINQ (C#).
Lorsque vous appelez la même fonction à l’extérieur d’une requête, LINQ to SQL crée une requête simple à partir de l’expression d’appel de méthode. La syntaxe SQL (le paramètre @p0
est lié à la constante passée) se présente comme suit :
SELECT dbo.ReverseCustName(@p0)
LINQ to SQL crée les éléments suivants :
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
Exemple
Dans la requête LINQ to SQL suivante, vous pouvez voir un appel inline à la méthode de fonction ReverseCustName
définie par l’utilisateur qui a été générée. La fonction n'est pas exécutée immédiatement, car l'exécution de la requête est différée. Le SQL généré pour cette requête se traduit en un appel à la fonction définie par l'utilisateur dans la base de données (consultez le code SQL suivant la requête).
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]