C# Enterprise Library 6 ExecuteSprocAccessor过载?

C# Enterprise Library 6 ExecuteSprocAccessor过载?,c#,.net-4.0,enterprise-library,enterprise-library-6,C#,.net 4.0,Enterprise Library,Enterprise Library 6,关于Microsoft Enterprise Libarary 6的新版本,他们有一个名为ExecuteSprocAccessor(执行SP时应返回Ienumerable)的方法,其所有重载都是: 用法示例: /*1*/ [Description("Return data as a sequence of objects using a stored procedure")] /*2*/ static void ReadDataAsObjects() /*3*/

关于Microsoft Enterprise Libarary 6的新版本,他们有一个名为
ExecuteSprocAccessor
(执行SP时应返回
Ienumerable
)的方法,其所有重载都是:

用法示例:

/*1*/   [Description("Return data as a sequence of objects using a stored procedure")]
/*2*/           static void ReadDataAsObjects()
/*3*/           {
/*4*/               // Create an object array and populate it with the required parameter values
/*5*/               object[] paramArray = new object[] { "%bike%" };
/*6*/               // Create and execute a sproc accessor that uses default parameter and outpu`t mappings
/*7*/               IEnumerable<Product> productData = defaultDB.ExecuteSprocAccessor<Product>("GetProductList", paramArray);
/*8*/               //...
/*9*/               //...
/*10*/           }
/*1*/[说明(“使用存储过程将数据作为对象序列返回”)]
/*2*/static void ReadDataAsObjects()
/*3*/           {
/*4*///创建一个对象数组并用所需的参数值填充它
/*5*/object[]paramArray=新对象[]{“%bike%”;
/*6*///创建并执行使用默认参数和输出映射的存储过程访问器
/*7*/IEnumerable productData=defaultDB.executesprocacessor(“GetProductList”,paramArray);
/*8*/               //...
/*9*/               //...
/*10*/           }
其他信息:

参数添加机制(此处)非常有问题,因为没有
ParameterName到value
关联

他们所做的就是(在第5行)

object[]paramArray=新对象[]{“%bike%”

因此,我猜如果我有超过1个参数,它将看起来像:

object[]paramArray=newobject[]{“%bike%”,19,“lala”…}

这意味着我必须知道sp的参数输入顺序

其他方法会将此类值附加到名称:

defaultDB.AddInParameter(sprocCmd,“state”,DbType.String,“newyork”)

问题:


是否有任何方法可以使用
executesprocacessor
,但仍然使用
ParameterName来进行值关联?(假设我不知道sp输入参数的顺序?

内部使用了一个
IParameterMapper
,这是一个非常简单的界面:

public interface IParameterMapper
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="command"></param>
    /// <param name="parameterValues"></param>
    void AssignParameters(DbCommand command, object[] parameterValues);
}
公共接口ipParameterMapper
{
/// 
/// 
/// 
/// 
/// 
void AssignParameters(DbCommand命令,object[]参数值);
}
这一切都是基于位置的,所以用开箱即用的代码做不了什么


一个选项是编写自己的访问器,该访问器使用一个自定义参数映射器,该映射器知道如何使用参数名。您可以在线程中找到一个这样的示例。

只是想知道:他们确实将
ParameterName to value
(AddInParameter)与其他方法进行了匹配。为什么不在这里呢?