asp.net mvc (миграция) - PullRequest
       29

asp.net mvc (миграция)

0 голосов
/ 27 февраля 2019

Я создаю таблицу в asp.net mvc, но когда я создаю миграцию, это сообщение об ошибке показывает

Введение ограничения FOREIGN KEY 'FK_dbo.DailyTransactions_dbo.Contracts_ContractId' для таблицы 'DailyTransactions' может вызвать циклы илинесколько каскадных путей.Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, либо измените другие ограничения FOREIGN KEY.Не удалось создать ограничение.См. Предыдущие ошибки.

это таблица DailyTransactions:

 public class DailyTransactions
{
    [Key]
    public int DailyTransactions_Id { get; set; }

    public double Account { get; set; }

    public string Account_Name { get; set; }

    public double Debit { get; set; }

    public double Credit { get; set; }

    public DateTime Date { get; set; }

    public string Remarks { get; set; }

    public int CustomerId { get; set; }

    [ForeignKey("CustomerId")]
    public virtual Customers customers { get; set; }

    public int ContractId { get; set; }

    [ForeignKey("ContractId")]
    public virtual Contracts contracts { get; set; }

}

и эта таблица контрактов:

 public class Contracts
{
    [Key]
    public int Contracts_Id { get; set; }

    public int Contract_Num { get; set; }

    public DateTime Contract_Start { get; set; }

    public DateTime Contract_End { get; set; }

    public string Status { get; set; }

     public string TypeOfRent { get; set; }

    public double AmountOfRent { get; set; }

     public double Total { get; set; }

    public int CustomerId { get; set; }

      [ForeignKey("CustomerId")]
    public virtual Customers customers { get; set; }

      public int sectionsId { get; set; }

      [ForeignKey("sectionsId")]
      public virtual Sections sections { get; set; }



}

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте отключить CascadeDelete для DailyTransactions и Contracts:

modelBuilder.Entity<DailyTransactions>()
    .HasRequired(c => c.Contracts)
    .WithMany()
    .WillCascadeOnDelete(false);

Например:

public class YourDBContext: DbContext 
{
    public YourDBContext(): base() 
    {
    }



    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<DailyTransactions>()
            .HasRequired(c => c.Contracts)
            .WithMany()
            .WillCascadeOnDelete(false);
    }
}
...