Ядро Entityframwork Модель самоотражения - PullRequest
0 голосов
/ 19 октября 2019

У меня есть категория имени класса, в которой есть дочерние элементы с типом категории (самоссылка)

Я создаю класс модели и настраиваю эту модель, но при запуске add -igration и update-database получаю ошибку

 public class Category: IAuditableEntity
 {
    public int Id { get; set; } 

    [StringLength(450)]
    public string Name { get; set; }

    public int? ParentId { get; set; }
    public virtual Category Parent { get; set; }
    public virtual ICollection<Category> Children { get; set; }
  }
      public class CategoryConfiguration :        IEntityTypeConfiguration<Category>
   {
   public void Configure(EntityTypeBuilder<Category> builder)
     {
        builder.HasIndex(c=>c.ParentId);
       builder.HasOne(c => c.Parent)
          .WithMany(c => c.Children)
        .HasForeignKey(c=>c.ParentId);
    }
  }

Я получаю эту ошибку

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

1 Ответ

0 голосов
/ 20 октября 2019

Сообщение об ошибке дает вам возможное решение.
Так как Parent кажется необязательным, я бы попробовал это:

builder.HasOne(c => c.Parent)
       .WithMany(c => c.Children)
       .HasForeignKey(c=>c.ParentId)
       .OnDelete(DeleteBehavior.ClientSetNull)
       ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...