Procédure : Utiliser des fonctions scalaires définies par l’utilisateur
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.
Notes
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 Comment : appeler une fonction inline définie par l’utilisateur.
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 :
[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));
}
<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