读取器关闭时无效尝试调用Read。 通过使用datareader从存储过程调用数据时,while循环终止而不执行,存储过程来自亚音速dal(wcf)
using (IDataReader reader = SPs.GetProductsSearch(ProductName,PageSize, PageIndex).GetReader())
{
while (reader.Read())
{
DataRow dr = dt.NewRow();
dr["ProductId"] = reader["ProductId"];
dr["ProductPriceId"] = reader["ProductPriceId"];
dr["Name"] = reader["Name"];
dr["UrlRewrite"] = reader["UrlRewrite"];
dr["Description"] = reader["Description"];
dr["Price"] = reader["Price"];
dr["Size"] = reader["Size"];
dr["Stock"] = reader["Stock"];
dr["Weight"] = reader["Weight"];
dr["MediaFilename"] = reader["MediaFilename"];
dr["ThumbnailFilename"] = reader["ThumbnailFilename"];
dr["ProductName"] = reader["ProductName"];
dr["ProductDescription"] = reader["ProductDescription"];
dt.Rows.Add(dr);
}
}
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}`
public static StoredProcedure GetProductsSearch(string name, int? PageSize, int? PageIndex)
{
SubSonic.StoredProcedure sp = new SubSonic.StoredProcedure("Test_Get_Products_Search", DataService.GetInstance("Echemist"), "dbo");
sp.Command.AddParameter("@SearchName", name, DbType.AnsiString, null, null);
sp.Command.AddParameter("@PageSize", PageSize, DbType.Int32, 0, 10);
sp.Command.AddParameter("@PageIndex", PageIndex, DbType.Int32, 0, 10);
return sp;
}
//ProductId stored procedure------------------------------------------------------------------------------------------
public static StoredProcedure GetProductsByProductId(int ProductId)
{
SubSonic.StoredProcedure sp = new SubSonic.StoredProcedure("Get_ProductsByProductId", DataService.GetInstance("Echemist"), "dbo");
sp.Command.AddParameter("@ProductId", ProductId, DbType.Int32, null, null);
return sp;
}