//好消息 //
我找到了问题的根本原因,它位于 Enterprise Library 6.0 中,DataBlock 源代码位于第 1 行的 CommandAccessor.cs 类中。66.
因为在命令对象内部,参数集合是不存在的。为了解决这个问题,我们需要在 SprocAccessor.cs 中执行以下操作,[方法在第 97 行]
在下面的方法中,命令对象位于 using 语句中。因此,当命令超出 using 子句的范围时,它会丢失参数集合值。所以,我删除了 using 子句,它工作正常。
/// <summary>
/// Executes the stored procedure and returns an enumerable of <typeparamref name="TResult"/>.
/// The enumerable returned by this method uses deferred loading to return the results.
/// </summary>
/// <param name="parameterValues">Values that will be interpret by an <see cref="IParameterMapper"/> and function as parameters to the stored procedure.</param>
/// <returns>An enumerable of <typeparamref name="TResult"/>.</returns>
public override IEnumerable<TResult> Execute(params object[] parameterValues)
{
/*
using (DbCommand command = Database.GetStoredProcCommand(procedureName))
{
parameterMapper.AssignParameters(command, parameterValues);
return base.Execute(command);
}
*/
DbCommand command = Database.GetStoredProcCommand(procedureName);
parameterMapper.AssignParameters(command, parameterValues);
return base.Execute(command);
}
我现在很高兴,找到了根本原因。现在工作正常。输出像子弹一样来了。
谢谢