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

Entity Frameworkでの削除呼び出しは、リストにある個々のアイテムではなく、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 に答える