Entity framework core 在实体框架代码优先方法中创建外键的问题
我有三种型号。类别模型、子类别模型和产品模型 SubCategoryModel具有来自CategoryModel的外键引用,ProductModel具有来自CategoryModel和SubCategoryModel的外键引用 在Entity framework core 在实体框架代码优先方法中创建外键的问题,entity-framework-core,ef-code-first,ef-core-5.0,Entity Framework Core,Ef Code First,Ef Core 5.0,我有三种型号。类别模型、子类别模型和产品模型 SubCategoryModel具有来自CategoryModel的外键引用,ProductModel具有来自CategoryModel和SubCategoryModel的外键引用 在addmigration命令之后更新数据库时,出现以下错误: 在表“ProductMst”上引入外键约束“FK_ProductMst_Subcategory MST_Subcategory ID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行
addmigration
命令之后更新数据库时,出现以下错误:
在表“ProductMst”上引入外键约束“FK_ProductMst_Subcategory MST_Subcategory ID”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。
无法创建约束或索引。请参阅前面的错误
这是我的代码-这是DBContext
类
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<CategoryModel> CategoryMst { get; set; }
public DbSet<SubCategoryModel> SubCategoryMst { get; set; }
public DbSet<ProductModel> ProductMst { get; set; }
这是子类别
模型:
public class SubCategoryModel
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[DisplayName("Display Order")]
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Display Order for sub category must be greater than 0")]
public int DisplayOrder { get; set; }
[ForeignKey("Category")]
public int CategoryId { get; set; }
public virtual CategoryModel Category { get; set; }
}
public class ProductModel
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string ShortDesc { get; set; }
public string Description { get; set; }
[Range(1, int.MaxValue)]
public double Price { get; set; }
public string Image { get; set; }
[Display(Name = "Category Type")]
[ForeignKey("Category")]
public int CategoryId { get; set; }
public virtual CategoryModel Category { get; set; }
[ForeignKey("SubCategory")]
public int SubCategoryId { get; set; }
public SubCategoryModel SubCategory { get; set; }
}
这是产品
型号:
public class SubCategoryModel
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[DisplayName("Display Order")]
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Display Order for sub category must be greater than 0")]
public int DisplayOrder { get; set; }
[ForeignKey("Category")]
public int CategoryId { get; set; }
public virtual CategoryModel Category { get; set; }
}
public class ProductModel
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string ShortDesc { get; set; }
public string Description { get; set; }
[Range(1, int.MaxValue)]
public double Price { get; set; }
public string Image { get; set; }
[Display(Name = "Category Type")]
[ForeignKey("Category")]
public int CategoryId { get; set; }
public virtual CategoryModel Category { get; set; }
[ForeignKey("SubCategory")]
public int SubCategoryId { get; set; }
public SubCategoryModel SubCategory { get; set; }
}
有关这些多级联路径问题的更多信息,请参阅。