引入了FOREIGN KEY约束“ XXX” ....无法创建约束或索引

时间:2019-05-06 12:27:27

标签: c# entity-framework

我正在建立一个新的电子商务项目。我希望每个类别都有很多子类别,这些子类别中有很多产品。我的产品,类别和子类别类别在这里;

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

当我尝试更新数据库时,出现此错误:

在表“产品”上引入外键约束'FK_Products_SubCategory_SubCategoryId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。查看以前的错误。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您需要在上下文中指定一对多关系,在这种情况下,一个产品具有一个子类别,而一个子类别具有多个产品

   modelBuilder.Entity<Product>()
                .HasOne(d => d.SubCategory)
                .WithMany(p => p.Products)
                .HasForeignKey(d => d.SubCategoryId);