一对一的级联删除不起作用

时间:2014-04-22 09:26:42

标签: entity-framework code-first

我正在使用EF和Code First。

我有一个像这样的Transaction类:

[Table("Transacties")]
    public class Transactie
    {
        [Key]
        [Column(Order = 1)] 
        [StringLength(128)]
        public string KIMTransactieCode { get; set; }

        [Column(Order = 2)]
        [StringLength(128)]
        public string BovenliggendeKIMTransactieCode { get; set; }

        [ForeignKey("BovenliggendeKIMTransactieCode")]
        public Transactie BovenLiggendeTransactie { get; set; }

        public DateTime? DatumLaatstBekeken { get; set; }

        public bool? IsZichtbaar { get; set; }

        public DateTime? IsZichtbaarGewijzigdOp { get; set; }

        public OpnameInfo OpnameInfo { get; set; }
}

关系如下: 事务可以具有子事务,当存在子事务时,父事务需要引用(' BovenliggendeKIMTransactieCode')。这是在一个类/表中完成定义的。

它主要使用数据注释。

我希望在此类上进行级联删除:删除(父)事务时,还必须删除所有相关的子事务。

我尝试按如下方式调用级联删除:

var transactions = mailboxDataContext.Transacties
                .Where(tr => tr.BovenliggendeKIMTransactieCode == null &&
                             tr.IsZichtbaar.HasValue &&
                             !tr.IsZichtbaar.Value &&
                             tr.IsZichtbaarGewijzigdOp.HasValue &&
                             tr.IsZichtbaarGewijzigdOp.Value < selectionDateTime)
                .ToList(); // Materialize

            if (transactions.Count > 0)
            {
                foreach (var transaction in transactions)
                {
                    mailboxDataContext.SetDeleted(transaction);
                }

                mailboxDataContext.SaveChanges();
            }

然后我得到:

  

&#34; DELETE语句与SAME TABLE REFERENCE冲突   约束   \&#34; FK_dbo.Transacties_dbo.Transacties_BovenliggendeKIMTransactieCode \&#34 ;.   冲突发生在数据库\&#34; PROGISKIM_Mailbox \&#34;,表中   \&#34; dbo.Transacties \&#34;,column&#39; BovenliggendeKIMTransactieCode&#39;。\ r \ n   声明已被终止。&#34;

如何解决这个问题?

更新 当我尝试删除SSMS中的主行时,我也得到了这个例外......

0 个答案:

没有答案