У меня есть сущность, 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
...