Partager via


Procédure : utiliser des fonctions scalaires définies par l'utilisateur (LINQ to SQL)

Vous pouvez mapper une méthode cliente définie sur une classe à une fonction définie par l'utilisateur à l'aide de l'attribut FunctionAttribute. Notez que le corps de la méthode construit une expression qui capture l'intention de l'appel de méthode et passe cette expression au DataContext pour la traduire et l'exécuter.

RemarqueRemarque

L'exécution directe se produit uniquement si la fonction est appelée à l'extérieur d'une requête.Pour plus d'informations, consultez Procédure : appeler des fonctions inline définies par l'utilisateur (LINQ to SQL).

Exemple

Le code SQL suivant présente une fonction scalaire ReverseCustName() définie par l'utilisateur.

CREATE FUNCTION ReverseCustName(@string varchar(100))
RETURNS varchar(100)
AS
BEGIN
    DECLARE @custName varchar(100)
    -- Implementation left as exercise for users.
    RETURN @custName
END

Vous pouvez mapper une méthode cliente telle que la méthode suivante pour ce code :

<FunctionAttribute(Name:="dbo.ReverseCustName", _
IsComposable:=True)> _
Public Function ReverseCustName(<Parameter(Name:="string", _
DbType:="VarChar(100)")> ByVal [string] As String) As _
<Parameter(DbType:="VarChar(100)")> String
    Return CType(Me.ExecuteMethodCall(Me, _
        CType(MethodInfo.GetCurrentMethod, MethodInfo), _
        [string]).ReturnValue, String)
End Function
[Function(Name = "dbo.ReverseCustName", IsComposable = true)]
[return: Parameter(DbType = "VarChar(100)")]
public string ReverseCustName([Parameter(Name = "string",
    DbType = "VarChar(100)")] string @string)
{
    return ((string)(this.ExecuteMethodCall(this,
        ((MethodInfo)(MethodInfo.GetCurrentMethod())),
        @string).ReturnValue));
}

Voir aussi

Autres ressources

Fonctions définies par l'utilisateur (LINQ to SQL)