Ограничение внешнего ключа Каскадные или множественные каскадные пути asp.net mvc

1

У меня всегда такая же проблема, когда есть двойное наследование:

  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);
    }

Может ли кто-нибудь помочь мне в этом? Я схожу с ума от этой проблемы!

Спасибо!

  • 2
    Я бы не совмещал и не сопоставлял атрибуты и плавные отображения API, выбирал один и придерживался его.
  • 0
    @BenRobinson как ты будешь делать?
Теги:
entity-framework
asp.net-mvc

1 ответ

1
Лучший ответ

На основе классов ограничений, активов и сегментов требуются все внешние ключи.

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);
}
  • 0
    Здравствуйте, я должен добавить свойство ICollection <Restriction> Ограничения в классе активов, даже если я не хочу писать в таблице активов, это просто таблица, которая дает мне информацию
  • 0
    большое спасибо это работает сейчас!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню