English 中文(简体)
删除类别及其子女/孙孙子女
原标题:Delete category and its children / grandchildren

使用 ObjectContext 。 我想通过执行系统传递 SQL 查询, 因为我不想只为了在事后删除而检索所有相关实体 。

类别表如下:

CatID | CatName | ParentID

CatID 是父式ID FK 的主密钥

I am wishing to delete a category and also all those that are under it. Can be 2+ levels deep of sub cats, so different ParentID s

Thought I could do it as below and just set "cascade" on delete option for the foreign key in the database, but it won t let me and it does not appear to want to cascade delete down by using the CatID - ParentID relationship and the query gets stopped by this very FK constraint.

public RedirectToRouteResult DelCat(int CatID)
{
    if (CatID != 0)
    {
        _db.ExecuteStoreCommand("DELETE FROM Categories WHERE CatID={0}", CatID);
        _db.SaveChanges();
    }

    return RedirectToAction("CatManage");
}
最佳回答

递归的 CTE 全部目录生成等级中所有类别列表。 显然, 删除部分, 全部删除 。

; with allCategories as (
 select CatID
   from Categories
  where CatID = @CatID_to_delete
  union all
 select Categories.CatID
   from allCategories
  inner join Categories 
     on allCategories.CatID = Categories.ParentID
)
delete Categories
  from Categories 
 inner join allCategories
    on Categories.CatID = allCategories.CatID

尝试从所有目录 < / code> 中 < code> 选择 * * 来先检查 。

" "http://sqlfiddle.com/#! 3/f883f/ 1, rel="no follow" >TEST@ Sql Fiddle

问题回答

为什么不在你的批量里发两份声明呢?

DELETE Categories WHERE ParentID = {0};
DELETE Categories WHERE CatID = {0};

如果您使用“ 不愿允许” 的框架, 那么就做对了: 将逻辑输入存储程序, 并调用存储程序 。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签