我有两个具有外键关系的表(1到多个)。当我从第一个表中删除项目时,我该如何做到这一点,它会自动删除所有带有来自第二个表的外键的值?
因此,当我从1个表中删除项目时,它将从2个表中删除所有项目,其中NameId = 1个表的ID
答案 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();
}
}
可能有更优雅的解决方案,但这是我首先想到的。