Введение ограничения FOREIGN KEY 'XYZ_ID' в таблицу 'XXX' может вызвать циклы или несколько каскадных путей в ядре MVC. - PullRequest
0 голосов
/ 29 ноября 2018

Я получаю эту ошибку в первом коде MVC CORE при вставке, и я делаю код первым для самой первой команды времени:

Update-Database -Context ProjectDbContext

"Введение ограничения FOREIGN KEY 'FK_Product_SubCategory_SubCategoryId' для таблицы«Продукт» может вызывать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, или измените другие ограничения FOREIGN KEY ".

Мои классы приведены ниже, а также объясняют, почемумы используем ассоциацию в классах модели MVC, как это:

public virtual SubCategory SubCategory { get; set; }

Or
public virtual ICollection<Category> Category { get; set; }

public virtual Icollection<SubCategory> SubCategory { get; set; }



public class Product
{

    public int ProductId { get; set; }

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

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

    [Required]
    public int Quatity { get; set; }

    [Required]
    public int Price { get; set; }

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

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

    public byte Status { get; set; }

    public DateTime TodayDate { get; set; }

    [Required]
    public int CategoryId { get; set; }

    [Required]
    public int SubCategoryId { get; set; }

    public virtual Category Category { get; set; }
    public virtual SubCategory SubCategory { get; set; }
}

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

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

    [Required]
    public int CategoryId { get; set; }

    public ICollection< Category> Category { set; get; }

    public ICollection<Product> Product { set; get; }
}  


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

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

1 Ответ

0 голосов
/ 29 ноября 2018

добавить Следующее в файле модели идентификации в классе ApplicationDbContext

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {            
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    }

надеюсь, это поможет, но ваше каскадное удаление будет отключено.

...