【发布时间】:2015-06-03 21:46:54
【问题描述】:
我有一个 cmets 表,其中包含列 Id - 评论的 ID,Commenter_Id 发布它的用户的 ID,以及 ParentComment_Id 一个自引用外键。评论只有两个级别,父级和子级。如果评论记录的 ParentComment_Id 为 null,则它是父评论。
我正在尝试编写一个表达式来删除用户的所有 cmets,但由于我之前提到的自我引用,这会导致问题。
以这个记录示例为例:
ID 为 2 的用户发布了一条 ID 为 3 的评论。因为这是父评论,所以它的 ParentComment_Id 值为 null。稍后,ID 为 1 的用户使用子评论回复该评论,创建评论 7(这两者之间还有其他 cmets/subcmets,因此 Id 增量跳转)。
我无法删除评论 ID 3,因为子评论评论 ID 7 有一个外键。
目前我尝试删除 cmets 的实体框架语句如下:
context.Comments.Where(x => x.Commenter.Id == user.Id).Delete();
但由于所描述的问题,这给了我一个例外。
我可能可以使用一些 foreach 循环来解决这个问题,但我希望有一种更简单的方法,比如 context.Cascade().Where(...。对于那些想知道Delete() 方法是 EntityFramework.Extended 包的一部分的人。
【问题讨论】:
-
如果评论被删除,您是否希望所有子 cmets 也被删除,或者您希望他们的 ParentComment_Id 发送为 null?
-
我要删除所有子cmets。
标签: c# entity-framework