EF Core один ко многим обратно к одной и той же сущности - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть сущность, SubQuestion, которая может относиться к нулю, одному или многим другим подзапросам.Я пытаюсь смоделировать это с EF Core.Вот дизайн, который я придумал до сих пор.

Объекты :

public class SubQuestionRelated
{
    public int SubQuestionId { get; set; }
    public SubQuestion SubQuestion { get; set; }
    public int RelatedToSubQuestionId { get; set; }
    public SubQuestion RelatedToSubQuestion { get; set; }
}

public class SubQuestion
{
    public int Id { get; set; }
    public List<SubQuestionRelated> RelatedSubQuestions { get; set; } = new List<SubQuestionRelated>();
    public SubQuestionRelated DontUse { get; set; }
    // other properties not relevant...
}

OnModelСоздание конфигурации

 modelBuilder.Entity<SubQuestionTPCalc>()
            .HasKey(sqtpc => new { sqtpc.SubQuestionId, sqtpc.RelatedToSubQuestionId });

 modelBuilder.Entity<SubQuestionTPCalc>()
            .HasOne(sqtpc => sqtpc.SubQuestion)
            .WithOne(sq => sq.DontUse)
            .OnDelete(DeleteBehavior.Restrict);

 modelBuilder.Entity<SubQuestionTPCalc>()
            .HasOne(sqtpc => sqtpc.RelatedToSubQuestion)
            .WithMany(sq => sq.RelatedSubQuestions)
            .HasForeignKey(sqtpc => sqtpc.RelatedToSubQuestionId);

Проблема

return _dbContext.Questions
                        .Include(q => q.SubQuestions)
                        .ThenInclude(sq => sq.RelatedSubQuestions)
                        .ToList();

Проблема в том, что когда я отправляю запрос на эти данные, EF Core не загружает связанные подвопросы.Я предполагаю, что есть какое-то поведение по умолчанию для предотвращения циклических ссылок?То, что я хочу, чтобы EF Core сделал, это ЛЕВОЕ СОЕДИНЕНИЕ к таблице RelatedSubQuestion.

ОБНОВЛЕНИЕ

EF Ядро втягивает связанные подвопросы, но соединяется не в том поле.Это соединение от SubQuestion до RelatedToSubQuestionId, тогда как я хотел присоединиться от SubQuestion до SubQuestionId ...

...