0

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");
    }
4

2 回答 2

1

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

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

db.tMembers.Remove(mem);

db.SaveChanges();
于 2013-02-13T18:01:40.187 回答
0
tMember mem = db.tMembers.Find(id);
db.Entry(mem).State = EntityState.Deleted;
db.SaveChanges();

这个怎么样?

于 2013-02-14T05:48:19.153 回答