我正在建立一个新的电子商务项目。我希望每个类别都有很多子类别,这些子类别中有很多产品。我的产品,类别和子类别类别在这里;
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约束。 无法创建约束或索引。查看以前的错误。
我该如何解决?
答案 0 :(得分:0)
您需要在上下文中指定一对多关系,在这种情况下,一个产品具有一个子类别,而一个子类别具有多个产品
modelBuilder.Entity<Product>()
.HasOne(d => d.SubCategory)
.WithMany(p => p.Products)
.HasForeignKey(d => d.SubCategoryId);