C# 使用FK删除实体

C# 使用FK删除实体,c#,linq,entity-framework,primary-key,sql-delete,C#,Linq,Entity Framework,Primary Key,Sql Delete,我想删除带有FK的实体。这是我的代码: var db = new DeresyDBEntities(); var item=db.Items.Where(p => p.ID == ItemId).SingleOrDefault(); if(item!=null) { foreach (var tag in db.ItemsTags.Where(p => p.ItemId == ItemId)) db.ItemsTags.Remove(tag); for

我想删除带有FK的实体。这是我的代码:

var db = new DeresyDBEntities();
var item=db.Items.Where(p => p.ID == ItemId).SingleOrDefault();
if(item!=null)
{
    foreach (var tag in db.ItemsTags.Where(p => p.ItemId == ItemId))
        db.ItemsTags.Remove(tag);
    foreach (var comment in db.ItemsComments.Where(p => p.ItemId == ItemId))
        db.ItemsComments.Remove(comment);
    foreach (var rate in db.ItemsVotes.Where(p => p.ItemId == ItemId))
        db.ItemsVotes.Remove(rate);

    db.Items.Remove(item);
    db.SaveChanges();
    return true;
}

还有其他方法可以删除它吗?

删除该项目时,不应该自动删除所有这些项目吗?这就是如果它们是项的外键,你不能在DB上使用级联删除吗?我在尝试仅删除项时遇到Linq异常。如何启用级联删除?您是否控制数据库?您收到的错误是什么?我猜您丢失了其他表中的另一个外键引用,而不是“Item”。ItemTags、ItemComments或ItemVote是否有外键?那就是我猜你错过FK的地方。