我有一张带有反应表的评论表的博客表。 例如:
博客
BLOG TWO
如果我们删除'BLOG TWO',我需要删除所有回复以及所有评论和BLOG帖子。
我认为解决方法是删除从.ToList()返回的所有记录。这就是我的想法/尝试。我似乎可以做一个'IN'列表类型的命令。
ctx.BlogResponse.Where(b => b.blogCommentID = xxMyListItemxxx** ).ForEach(ctx.BlogResponse.DeleteObject);
如何从.ToList()中删除/包含记录?
答案 0 :(得分:1)
实体框架不是很擅长这样的批量操作。有办法完成你所要求的,但它们很笨拙而且很慢。
最好的解决方案是在您的外键约束上添加ON DELETE CASCADE
,将评论链接到博客,并将您的回复链接到评论。这样,您只需删除EF中的博客,数据库就会非常快速地自动删除所有相关数据。
答案 1 :(得分:0)
您应该阅读此article标题的部分:级联删除关系规则
答案 2 :(得分:0)
我发现'.DeleteObject'删除了返回的LIST中包含的项目。我能够打几个电话,效果很好。
ctx.BlogComments.Where(c => c.blogID == ID).ToList()的ForEach(ctx.BlodComments.DeleteObject);
ctx.BlogResponse.Where(c => c.bCommID == CID).ToList()的ForEach(ctx.BlogResponse.DeleteObject);
.ForEach是我以前没用过的东西,在这种情况下,它可以工作。