如何:使用用户定义的标量值函数 (LINQ to SQL)

更新:November 2007

您可以通过使用 FunctionAttribute 属性将类中定义的客户端方法映射到用户定义的函数。请注意,方法体会构造一个捕获方法调用意向的表达式,并将该表达式传递给 DataContext 进行转换和执行。

说明:

只有在查询外部调用此函数时,才会直接执行。有关更多信息,请参见如何:以内联方式调用用户定义的函数 (LINQ to SQL)

示例

下面的 SQL 代码展示了一个用户定义的标量值函数 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

您可以为此代码映射一个客户端方法,例如,可以映射下面这个方法:

<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));
}

请参见

其他资源

用户定义函数 (LINQ to SQL)