.NET Core EF один в несколько в подклассах получает ошибку цикла - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу иметь отношение «один ко многим» между подклассами одного мастер-класса, а на втором этапе использовать мастер-класс для отношений с другим классом, см. Модели ниже:

BasePost.cs

public abstract class BasePost
{   
    [Key]
    public long Id { get; set; }

    public ICollection<Comment> Comments { get; set; }

}

Question.cs:

 public class Question: BasePost
{

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

    public string Body { get; set; }

    public ICollection<Answer> Answers { get; set; }
}

Answer.cs

 public class Answer: BasePost
{
    public string Body { get; set; }

    public int Vote { get; set; }
    public Question Question { get; set; }
    public long QuestionId { get; set; }
}

Comment.cs

public class Comment
{
    [Key]
    public long Id { get; set; }
    public string Text { get; set; }
    public BasePost BasePost { get; set; }
    public long BasePostId { get; set; }
    public DateTime CreateDate { get; set; }
}

и, наконец, в ApplicationDbContext.cs:

        builder.Entity<Answer>()
            .HasOne(x => x.Question)
            .WithMany(a => a.Answers)
            .HasForeignKey(k => k.QuestionId)
            .OnDelete(DeleteBehavior.Cascade);

builder.Entity<Comment>()
            .HasOne(x => x.BasePost)
            .WithMany(a => a.Comments)
            .HasForeignKey(k => k.BasePostId)
            .OnDelete(DeleteBehavior.ClientSetNull);

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

...