C# Enterprise Library 6 ExecuteSprocAccessor过载?
关于Microsoft Enterprise Libarary 6的新版本,他们有一个名为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*/
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)与其他方法进行了匹配。为什么不在这里呢?