我正在尝试删除帖子,但每当我删除帖子时,其标签都不会被删除。我正在使用断点来查看事情是如何发生的,我注意到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 };
}
GetTag
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());
}
我现在能够调用标记列表,但仍无法使用我的帖子删除它。这给了我一个错误收集被修改;枚举操作可能无法执行。
答案 0 :(得分: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());
}
答案 1 :(得分:0)
如果我正确理解你的问题,你可以修改你的Post类,以包含一个名为“Tags”的属性,它是你的Tag类的集合,并包含该帖子的所有标签名称,那么你可以这样做获取该帖子的标签,然后删除它们。
Post post = GetPost(id);
var tagss = post.Tags;