У меня есть функции, вызываемые в функции сервиса WCF, и я получаю исключение, указанное выше в подкатегориях. Функция генератора на линии считывателя excute isn 't он предположил, что cmd, созданный во второй функции, совершенно другой экземпляр, чем другой, , пожалуйста, я смущен, и мне нужны советы для поддержки?Существует уже открытый DataReader, связанный с этой Командой, который должен быть закрыт первым - WCF
public static List<Category> categoryGenerator(ref SqlConnection con)
{
Category category = null;
List<Category> list = null;
List<SubCategory> subcategoryList = null;
string categoryName = null;
string categoryLink = null;
SqlCommand cmd = new SqlCommand("sp_categoriesgenerator", con);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while(reader.Read())
{
categoryName = reader["CategoryName"].ToString();
categoryLink = reader["CategorySEO"].ToString() + "/";
subcategoryList = subcategoriesGenerator(ref con, Convert.ToInt32(reader["CategoryId"].ToString()));
category.categoryName = categoryName;
category.categoryLink = categoryLink;
category.subcategories = subcategoryList;
list.Add(category);
category = null;
}
reader.Close();
return list;
}//end CategoryGenerator
public static List<SubCategory> subcategoriesGenerator(ref SqlConnection con, int categoryId)
{
SubCategory subcategory = null;
List<SubCategory> list = null;
string SubCategoryName = null;
string SubCategoryLink = null;
SqlCommand cmd = new SqlCommand("sp_subcategoriesgenerator", con);
cmd.Parameters.AddWithValue("@categoryID", categoryId);
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
SubCategoryName = reader["SubcategoryName"].ToString();
SubCategoryLink = reader["CategorySEO"].ToString() + "/" + reader["SubcategorySEO"] + "/";
subcategory.subcategoryName = SubCategoryName;
subcategory.subcategoryLink = SubCategoryLink;
list.Add(subcategory);
subcategory = null;
}
reader.Close();
return list;
}// end subcategoriesGenerator