Cómo: Usar funciones definidas por el usuario con valores escalares (LINQ to SQL)
Actualización: November 2007
Puede asignar un método de cliente definido en una clase a una función definida por el usuario utilizando el atributo FunctionAttribute. Observe que el cuerpo del método construye una expresión que captura el intento de llamada al método y pasa esa expresión a DataContext para su conversión y ejecución.
Nota: |
---|
La ejecución directa sólo se produce si se llama a la función fuera de una consulta. Para obtener más información, consulte Cómo: Llamar a funciones inline definidas por el usuario (LINQ to SQL). |
Ejemplo
El código de SQL siguiente presenta una función ReverseCustName() definida por el usuario con valores escalares.
CREATE FUNCTION ReverseCustName(@string varchar(100))
RETURNS varchar(100)
AS
BEGIN
DECLARE @custName varchar(100)
-- Implementation left as exercise for users.
RETURN @custName
END
Para este código, asignaría un método de cliente como el siguiente:
<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));
}