1

投稿を削除しようとしていますが、投稿を削除してもタグが削除されません。ブレークポイントを使用して状況を確認していますが、GetPost が呼び出されるたびにタグが含まれていないことに気付きました。以下の私のコードでは、delete メソッドで tagg を挿入/呼び出しようとしていますが、それを呼び出すことができないようです。

コントローラーでの私の削除

   public ActionResult Delete(int id)
        {
            if (IsUser)
            {
                Post post = GetPost(id);
                var tagss = db.Tags.Where(tg => tg.ID == id); // this should call GetTag but i dunno how :(
                foreach (var t in tagss)
                {
                    db.Tags.DeleteObject(t);
                }

                db.DeleteObject(post);
                db.SaveChanges();                   
            }
            return Redirect(Request.UrlReferrer.ToString());
        }

GetPost

 private Post GetPost(int? id)
        {
            return id.HasValue ? db.Posts.Where(x => x.ID == id).First() : new Post() { ID = -1 };           
        }

タグを取得

private Tag GetTag(string tagName)
        {
            return db.Tags.Where(x => x.Name == tagName).FirstOrDefault() ?? new Tag() { Name = tagName };
        }

問題:
投稿を削除するたびにタグも削除されるように、削除機能にタグを含めようとしていますが、呼び出す方法がわかりません。plsは私を助けてくれます。申し訳ありませんが、クエリが苦手です。:(

更新:

public ActionResult Delete(int id)
        {
            if (IsUser)
            {
                Post post = GetPost(id);
                var tagss = var taggs = post.Tags;
                foreach (var t in tagss)
                {
                    db.Tags.DeleteObject(t);
                }

                db.DeleteObject(post);
                db.SaveChanges();                   
            }
            return Redirect(Request.UrlReferrer.ToString());
        }

タグリストを呼び出すことができるようになりましたが、投稿で削除できませんでした。これにより、コレクションが変更されましたというエラーが表示されます。列挙操作が実行されない場合があります。

4

2 に答える 2

1

.ToListを追加したばかりのタグを削除できるようになり、エラーがなくなりました。これが私の作業中のものです。

 public ActionResult Delete(int id)
        {
            if (IsUser)
            {
                Post post = GetPost(id);
                var taggs = post.Tags;
                foreach (var t in tagss.ToList())
                {
                    db.Tags.DeleteObject(t);
                }

                db.DeleteObject(post);
                db.SaveChanges();                   
            }
            return Redirect(Request.UrlReferrer.ToString());
        }
于 2013-02-26T02:38:36.573 に答える
0

問題を正しく理解している場合は、Postクラスを修正して、Tagクラスのコレクションであり、その投稿のすべてのタグ名を含む「Tags」というプロパティを含めることができます。次に、次のようにしてタグを取得できます。その投稿に対して、それらを削除します。

Post post = GetPost(id);
var tagss = post.Tags;
于 2013-02-25T13:56:19.790 に答える