获取SP参数列表

时间:2012-10-04 15:40:23

标签: c# .net linq-to-sql stored-procedures parameters

我正在编写一个函数来调用存储过程给定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的参数?

1 个答案:

答案 0 :(得分:3)

Name property(如您所知)返回CLR空间中函数的名称。

您要使用的是MappedName property,定义为(强调我的):

  

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

请注意,对Parameters property MetaFunction class的调用会返回有关基础SP参数的信息;它是一个映射,因此它包含SP信息以及与同一MetaParameter实例关联的CLR表示信息。