首页 > 解决方案 > 删除级联不起作用

问题描述

我有这些实体:

public class Ranking
{
    [Key]
    public int Id { get; set; }

    public virtual IList<FeederRanking> FeederRanking { get; set; }
}

public class FeederRanking
{
    [Key]
    public int Id { get; set; }

    public int RankingId { get; set; }

    [ForeignKey("RankingId")]
    public virtual Ranking Ranking { get; set; }

    public long ResultId { get; set; }

    [ForeignKey("ResultId")]
    public virtual StudyResult StudyResult { get; set; }
}

public class StudyResult
{
  .....
}

数据库上下文:

modelBuilder.Entity<FeederRanking>()
    .HasRequired(f => f.Ranking)
    .WithMany(f => f.FeederRanking)
    .HasForeignKey(f => f.RankingId)
    .WillCascadeOnDelete(true);

负责排除的方法:

public void Exclude(long idExclude)
{
    Ranking modelExclude = this.FindById(idExclude);

    try
    {
        Delete(modelExclude);
        Save();
    }
    catch (DbUpdateException ex)
    {
        throw ex;
    }
}

public virtual void Delete(T entity)
{
     this.GetQuery.Remove(entity);
}

public virtual void Save()
{
     this.Context.SaveChanges();
}

我需要删除我的RankingsFeedersRanking,但我收到了异常:

违反完整性约束 (BD.FK2_FEEDER_RANKING) - 找到子记录

到目前为止,我已经看到了堆栈溢出的示例,但我不知道我做错了什么。

在这种情况下进行级联删除的正确方法是什么?

标签: c#asp.net-mvcentity-framework

解决方案


推荐阅读