Введение ограничения FOREIGN KEY "XXX" ..... Не удалось создать ограничение или индекс - PullRequest
0 голосов
/ 06 мая 2019

Я создаю новый проект электронной коммерции.Я хочу, чтобы у каждой категории было много подкатегорий, и у этих подкатегорий есть много продуктов.Классы моего продукта, категории и подкатегории находятся здесь;

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public List<SubCategory> SubCategories { get; set; }
}

public class SubCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ItemsInCategory { get { return Products.Count; } }

    public List<Product> Products { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Product 
{

    public Product()
    {
        Attributes = new List<Attribute>();
        Reviews = new List<Review>();
    }

    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public string BrandName { get; set; }
    public decimal Price { get; set; }
    public bool OnSale { get; set; }
    public int SalePercantage { get; set; }
    public decimal SalePrice { get; set; }

    public string ShortDescription { get; set; }

    public string Description { get; set; }

    public int SubCategoryId { get; set; }
    public SubCategory SubCategory { get; set; }

    public List<Attribute> Attributes { get; set; }
    public List<Review> Reviews { get; set; }
}

Пока я пытаюсь обновить базу данных, я получаю эту ошибку:

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

Как я могу это исправить?

1 Ответ

0 голосов
/ 06 мая 2019

Вы должны указать в своем контексте отношение «один ко многим», в вашем случае у продукта есть одна подкатегория, а у подкатегории есть много продуктов

   modelBuilder.Entity<Product>()
                .HasOne(d => d.SubCategory)
                .WithMany(p => p.Products)
                .HasForeignKey(d => d.SubCategoryId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...