我改变了这个
的代码public override IDataReader getData(int pageId, string pageName)
{
try
{
return ((IDataReader)(SqlHelper.ExecuteReader(ConnectionStringConnectorPool, GetFullyQualifiedName("PageModuleGetAll"),pageId, pageName)));
}
catch (Exception ex)
{
ExceptionController.WriteExceptionToLog(string.Format("SqlDataProvider.cs/GetPageByIdAndName: pageId:{0}, pageName{1}", pageId, pageName), -2, ex);
return null;
}
}
到此
public override IDataReader getData(string sqlMethod, int pageId, string pageName)
{
try
{
return ((IDataReader)(SqlHelper.ExecuteReader(ConnectionStringConnectorPool, GetFullyQualifiedName(sqlMethod),pageId, pageName)));
}
catch (Exception ex)
{
ExceptionController.WriteExceptionToLog(string.Format("SqlDataProvider.cs/GetPageByIdAndName: pageId:{0}, pageName{1}", pageId, pageName), -2, ex);
return null;
}
}
我正在调用这样的方法
public List<PageModuleInfo> GetAllPageModules(int pageId, string paneName)
{
try
{
return Common.Utilities.CBO.FillCollection<PageModuleInfo>(BLL.Data.DataProvider.Instance().getData("PageModuleGetAll", pageId, paneName));
}
catch (Exception ex)
{
ExceptionController.WriteExceptionToLog(new Exception("PageModuleController.cs/GetAllPageModules:" + System.Environment.NewLine + ex));
return null;
}
}
现在我获取参数计数与参数值计数错误不匹配,我想知道原因。
答案 0 :(得分:1)
该错误表示您正在使用存储过程,并且提供的参数值多于存储过程中声明的参数。
所以:检查3个存储过程中的每一个,并仔细检查每个参数的数量。如果其中一个人没有至少2个,那就是问题所在。特别是,还要检查相同存储过程的不同版本;例如,可能有dbo.PageModuleGetAll
和johndev.PageModuleGetAll
- 其中johndev.PageModuleGetAll
是包含2个参数的更新版本。但是,如果您的应用程序使用不同的身份(集成安全性,专用的SQL帐户等)运行 - 那么它仍将运行dbo.PageModuleGetAll
答案 1 :(得分:0)
您的方法是对基类方法的重写,因此派生类函数签名可能与基类签名不匹配。
这会给你一个参数值计数错误&#39;因为基类的参数数量小于派生类。