在使用存储过程中的datareader检索数据时关闭阅读器时无效尝试调用Read

时间:2014-01-06 15:28:06

标签: c# wcf dataset subsonic datareader

读取器关闭时无效尝试调用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;
    }

0 个答案:

没有答案