删除LINQ到EF中的关联数据

Che*_*hev 4 c# linq linq-to-entities entity-framework entity-framework-4

我是LINQ和EF的新手,我对我正在开发的论坛有一个快速的问题.在这个论坛上有主题,每个主题都有相关的回复.我假设EF会看到约束,删除主题时也会删除相关的回复.相反,它会抛出约束错误.是否有一种简单的方法可以删除所有相关的回复而不循环遍历它们并将每个回复标记为删除?

例如,在SQL中我会做这样的事情:

DELETE FROM topic_replies WHERE TopicID='999'
DELETE FROM topics where TopicID='999'
Run Code Online (Sandbox Code Playgroud)

但是在EF中,我知道这样做的唯一方法是:

Topic topic = //LINQ to get topic.
foreach (Reply reply in topic.Replies)
{
     dbEntity.Replies.DeleteObject(reply);
}
dbEntity.Topics.DeleteObject(topic);
Run Code Online (Sandbox Code Playgroud)

我想这很好,如果这是我必须做的.只是好奇是否有更好的方法.提前致谢.

Jah*_*ine 8

您可以在EF模式中的所有者对象中设置删除级联.

<Association Name="FK_ItemChildren_Item">
 <End Role="Item" Type="Model.Store.Item" Multiplicity="1">
  <OnDelete Action="Cascade" />
 </End>
 <End Role="ItemChildren" Type="Model.Store.ItemChildren"
  Multiplicity="*" />
 <ReferentialConstraint>
 ..
 </ReferentialConstraint>
</Association>
Run Code Online (Sandbox Code Playgroud)

看看http://codepolice.net/2008/12/16/cascade-delete-in-entity-framework/