Vorgehensweise: Verwenden von benutzerdefinierten Skalarwertfunktionen
Sie können eine Clientmethode für eine Klasse einer benutzerdefinierten Funktion zuweisen. Verwenden Sie hierfür das FunctionAttribute-Attribut. Beachten Sie, dass der Hauptteil der Methode einen Ausdruck erstellt, der die Absicht des Methodenaufrufs erfasst und diesen Ausdruck zur Übersetzung und Ausführung an den DataContext weiterleitet.
Hinweis
Die direkte Ausführung tritt nur auf, wenn die Funktion außerhalb einer Abfrage aufgerufen wird. Weitere Informationen finden Sie unter Vorgehensweise: Inline-Aufrufen von benutzerdefinierten Funktionen.
Beispiel
Der folgende SQL-Code zeigt eine benutzerdefinierte Skalarwertfunktion: ReverseCustName()
.
CREATE FUNCTION ReverseCustName(@string varchar(100))
RETURNS varchar(100)
AS
BEGIN
DECLARE @custName varchar(100)
-- Implementation left as exercise for users.
RETURN @custName
END
Sie würden beispielsweise die folgende Clientmethode für diesen Code zuordnen:
[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