删除一对多的实体。 (的DbContext)

时间:2013-02-13 17:56:07

标签: asp.net-mvc entity-framework entity-framework-4

foreach没有删除任何东西..它似乎只是NULL表中的一些字段.. ..以及我如何删除主要的父母后我不确定...一直在寻找一个没有运气的简单解决方案..

 [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        tMember mem = db.tMembers.Find(id);

        // find all VoteScores related to the member and delete them
        var voteScores = db.tMemVoteScores.Where(mvs => mvs.MembersID == mem.MembersID).AsEnumerable();

        foreach (var mvs in voteScores)
        {
            var singleMvs = mvs;
            mem.tMemVoteScores.Remove(singleMvs);
        }

        db.SaveChanges();

        //Delete the actual member now... where is the remove method?  
       // mem.remove???




        return RedirectToAction("Index");
    }

2 个答案:

答案 0 :(得分:1)

删除实体框架中的调用需要在DbSet级别完成,而不是在列表中找到的单个项目上完成。这也需要为父对象本身完成,即以下内容:

foreach (var mvs in voteScores)
{
  var singleMvs = mvs;
  db.tMemVoteScores.Remove(singleMvs);
}

db.tMembers.Remove(mem);

db.SaveChanges();

答案 1 :(得分:0)

tMember mem = db.tMembers.Find(id);
db.Entry(mem).State = EntityState.Deleted;
db.SaveChanges();

这个怎么样?