我有非常基本的类别模型ID, RootCategoryID, Name
,如果我有很多孩子的类别,它不会删除,所以我需要递归地执行此操作,但是当我这样做时会出错。
我知道如果我添加MultipleActiveResultSets=true
连接字符串有一种解决方法,但是 AFAIK 这可以从代码中解决,使用此参数不是一个好主意。这是真的?
错误
已经有一个与此命令关联的打开的 DataReader,必须先关闭它。
代码
public ActionResult Delete(int id)
{
this.DeleteRecursive(id);
_db.SaveChanges();
return RedirectToAction("index", "category");
}
private void DeleteRecursive(int id)
{
// Selecting current category
var currentCategory = _db.Categories.Where(x => x.ID == id).Single(); // this line
var childrenCategories = _db.Categories.Where(x => x.RootCategory.ID == id);
// Check if category has children
if (childrenCategories.Count() > 0)
{
// Loop through children and apply same function recrusively
foreach (var c in childrenCategories)
{
this.DeleteRecursive(c.ID);
}
}
// Category has no children left, delete it
_db.Categories.Remove(currentCategory);
}