1

我正在尝试删除帖子,但是每当我删除帖子时,它的标签都不会被删除。我正在使用断点来查看事情是如何发生的,并且我注意到 GetPost 在调用时不包含该标记。在下面的代码中,您可以看到我正在尝试在 delete 方法中插入/调用标记,但似乎无法调用它。

我在控制器中的删除

   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());
        }

获取邮政

 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 };
        }

问题:
我试图在删除功能中包含标签,这样每当我删除我的帖子时,它也会被删除,但我不知道如何调用它。请帮助我,谢谢,对不起,我不擅长查询。:(

更新:

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 类以包含一个名为“Tags”的属性,它是您的 Tag 类的集合并包含该帖子的所有标签名称,那么您可以执行类似的操作来获取标签对于该帖子,然后将其删除。

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