Entity Framework и введение ошибки ограничения FOREIGN KEY в отношениях «многие ко многим» - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь создать следующую модель для веб-приложения:

  • Компания может создавать клиентов и категории (для клиентов).
  • Клиент может принадлежать к нескольким категориям.
  • Несколько клиентов могут принадлежать к одной категории.

Объекты:

public class Company
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public virtual ICollection<Customer> Customers { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
}

public class Customer
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int CompanyId { get; set; }

    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    public virtual Company Company { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
}

public class Category
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int CompanyId { get; set; }

    [Required]
    public string Name { get; set; }

    public virtual Company Company { get; set; }
    public virtual ICollection<Customer> Customers { get; set; }
}

Контекст данных:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<Company> Companies { get; set; }

    public DbSet<Category> Categories { get; set; }
    public DbSet<Customer> Customer { get; set; }

    public ApplicationDbContext()
        : base(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString, throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

Когда яЗапустив приложение и попытавшись получить компанию, я получаю следующую ошибку:

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

Я не понимаю, почему я получаю эту ошибку. Я думаю, что это проблема отношения многих ко многим. Что я делаю не так?

...