on delete使用外键删除值

时间:2015-11-11 12:48:20

标签: c# sql entity-framework

我有两个具有外键关系的表(1到多个)。当我从第一个表中删除项目时,我该如何做到这一点,它会自动删除所有带有来自第二个表的外键的值?

enter image description here

因此,当我从1个表中删除项目时,它将从2个表中删除所有项目,其中NameId = 1个表的ID

2 个答案:

答案 0 :(得分:2)

取决于数据库管理系统;使用MS SQL Server,您可以将外键设置为" ON DELETE CASCADE"这正是你所要求的。

http://www.techonthenet.com/sql_server/foreign_keys/foreign_delete.php

答案 1 :(得分:0)

您可以为此编写一个函数:

public void RemoveWithRelatedEntries(int table1ItemID)
{
    using(var db = new dbEntities())
    {
        // get all entities of table 2
        var tab2Entities = db.table2.Where(tab2Ent=>tab2Ent.table1Reference == table1ItemID);
        // remove all those entities
        foreach(table2Item item in tab2Entities)
        {            
            db.table2.Remove(item);
        }
        // finally remove entity from table 1
        var table1entitiy = db.table1.Find(table1ItemID);
        db.table1.Remove(table1entity);
        db.Save();
    }
}

可能有更优雅的解决方案,但这是我首先想到的。