获取 SP 参数列表



我正在编写一个函数来调用给定参数IDictionary的存储过程。

[Function(Name = "dbo.GetTrackingInfo")]
[ResultType(typeof(Shipment))]
[ResultType(typeof(Piece))]
[ResultType(typeof(Item))]
public IMultipleResults GetTrackingInfo(IDictionary<string, object> arguments)
{
    var method = (MethodInfo)MethodInfo.GetCurrentMethod();
    var argumentsArr = this.Mapping.GetFunction(method).Parameters
        .Select(p => arguments.ContainsKey(p.Name)
            ? NullableExtensions.Convert(arguments[p.Name], p.ParameterType)
            : null)
        .ToArray();
    return (IMultipleResults)this.ExecuteMethodCall(this, method, argumentsArr);
}

我希望Mapping.GetFunction(method).Parameters返回 SP 的参数,但它返回了此方法的参数。有没有简单的方法来获取底层 SP 的参数?

Name 属性(如您所发现的)返回 CLR 空间中函数的名称。

你想使用的是MappedName属性,定义为(强调我的):

获取数据库函数中参数的名称。

请注意,对 MetaFunction 类上的 Parameters 属性的调用确实会返回有关基础 SP 参数的信息;它是一个映射,因此它既具有 SP 信息,又具有与同一MetaParameter实例关联的 CLR 表示形式的信息。

最新更新