外键约束级联或多个级联路径错误asp.net mvc



当存在双重继承时,我总是遇到同样的问题,即:

  public class Restriction 
  {
 public int RestrictionID {get;set;}
 public string Restriction_Name {get;set}
 public int AssetID { get; set;}
 public int SegmentID {get;set;}
 public virtual Asset {get;set;}
 public virtual Segment { get;set;}
 }
 public class Asset
{
     [Key]
     public int AssetID
     public string Asset_Name
     public virtual ICollection<Segment> Segments
}
  public class Segment
{
    [Key]
    public int SegmentID
    public string Segment_Name
    [ForeignKey("Asset")]
    public int AssetID
    public virtual Asset Asset
    public virtual ICollection<SubAsset> SubAssets
}

我试图停止级联,但我再次得到相同的错误:

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Entity<Restriction>()
                .HasRequired(f => f.Segment)
                .WithRequiredDependent()
                .WillCascadeOnDelete(false);
    }

有人能帮我吗?这个问题我快疯了!

谢谢!

基于Restriction、Asset和Segment类,所有外键都是必需的。

public class Asset
{
    ...    
    // Restrictions is missing
    public virtual ICollection<Restriction> Restrictions { get; set; }
}

映射

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Asset>()
        .HasMany(e => e.Restrictions)
        .WithRequired(e => e.Asset)
        .WillCascadeOnDelete(false);
    modelBuilder.Entity<Asset>()
        .HasMany(e => e.Segments)
        .WithRequired(e => e.Asset)
        .WillCascadeOnDelete(false);
    modelBuilder.Entity<Segment>()
        .HasMany(e => e.Restrictions)
        .WithRequired(e => e.Segment)
        .WillCascadeOnDelete(false);
}

最新更新