Проблема при настройке отношения свойств односторонней навигации

public class Answer
    {
        [Key]
        public int AnswerID { get; set; }

        [ForeignKey("Question")]
        [Required]
        public int QuestionID { get; set; }

        public Question Question { get; set; }

        public virtual ICollection<QuestionOption> SelectedOptions { get; set; }

    }

public class Question
    {
        [Key]
        public int QuestionID { get; set; }

        public ICollection<QuestionOption> AnswerOptions { get; set; }
    }

 public class QuestionOption
    {
        [Key]
        public int QuestionOptionID { get; set; }

        [Required]
        public String Value { get; set; }

        [ForeignKey("Question")]
        public int QuestionID { get; set; }

        public Question Question { get; set; }


    }

Выше мои занятия (только с важными свойствами). Как видите, я пытаюсь настроить ответ, чтобы получить список выбранных опций из доступных опций для вопроса. Как вы можете видеть, для этого потребуется только свойство односторонней навигации.

Я пробовал:

    modelBuilder.Entity<Answer>()
        .HasMany(e => e.SelectedOptions)
        .WithRequired()
        .WillCascadeOnDelete(false); 

Но когда я пытаюсь запустить мой метод seed, я получаю:

Объекты в ApplicationDbContext.QuestionOptions участвуют в отношении "Answer_SelectedOptions". 0 связанных 'Answer_SelectedOptions_Source' были найдены. 1 'Answer_SelectedOptions_Source' ожидается.

Все таблицы строятся за исключением таблицы Answers_SelectedOptions. Я подозреваю, что есть что-то не совсем правильное в моём утверждении построителя модели. Спасибо за любую помощь! EF является новым для меня

Я тоже пробовал

    modelBuilder.Entity<Answer>()
        .HasMany(e => e.SelectedOptions)
        .WithMany();

Но я получаю ошибку

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

0 ответов

Другие вопросы по тегам