如何从EF 4中的相关表中删除行?

时间:2012-05-15 20:04:49

标签: c# entity-framework entity-framework-4

所以这里有3张我正在使用的表:

enter image description here

我想删除ClaimCodingProcedureCodeModifierXref表中的所有内容以及来自特定ClaimCodingID的ProcedureCodeModifier中的所有相关行。到目前为止,这是我的代码:

using (HCCustDataEntities hc = new HCCustDataEntities())
            {
                var result = (from CPC in hc.ClaimCodingProcedureCodeModifierXrefs
                              where CPC.ClaimCodingID == claimCodingID
                              select CPC);

                foreach (var item in result)
                {
                    hc.DeleteObject(item);
                }
            }

但只有Xref表中的数据才会被删除。为什么EF也不删除相关的行?

2 个答案:

答案 0 :(得分:2)

在您的关系中使用CASCADE DELETE。删除主记录时,实体框架将自动删除详细信息/子对象。您不需要自己明确删除关系中的子记录。

enter image description here

答案 1 :(得分:2)

因为您只删除了CCPCMX行。

这是未经测试的,但它应该是这样的:

using (HCCustDataEntities hc = new HCCustDataEntities())
{
   var result = (from CPC in hc.ClaimCodingProcedureCodeModifierXrefs
                 where CPC.ClaimCodingID == claimCodingID
                 select CPC);

   foreach (var item in result)
   {
      hc.DeleteObject(item);

      var result2 = from pcm in hc.ProcedureCodeModifier
                    where pcm.ProcedureCodeModifierID == item.ProcedureCodeModifierID
                    select pcm;

      foreach (var row in result2)
         hc.DeleteObject(row);

      var result3 = from cc in hc.ClaimCoding
                    where cc.ClaimCodingID == item.ClaimCodingID
                    select cc;

      foreach (var row in result3)
         hc.DeleteObject(row);          
   }
}