Include добавляет не все данные

В общем, есть 2 сущности:

public class Project
{
    public int Id { get; set; }
    public string ProjectName { get; set; }
    public string ZnName { get; set; }
    public virtual ICollection<Task> Tasks { get; set; }
}

public class Task
{

    public int Id { get; set; }
    public int ProjectId { get; set; }
    public string Name { get; set; }
    public double? TimePlan { get; set; }
    public int? ItemsPlan { get; set; }
    public float? ImagesPlan { get; set; }
    public virtual Project Project { get; set; }
}

В конфигурационных файлах я настроил отношения между ними:

        builder.HasMany(x => x.Tasks)
            .WithOne(x => x.Project)
            .HasForeignKey(x => x.ProjectId);

        builder
            .HasOne(t => t.Project)
            .WithMany(p => p.Tasks)
            .HasForeignKey(t => t.ProjectId);

Я знаю, что достаточно настройки в одну сторону, то от безисходности продублировал их в настройку другой сущности, так как думал, что это решит проблему...

EF Core последняя редакция второй версии.

В своем репозитории делаю вот такую штуку:

        var result = await context.Projects.Include(p => p.Tasks)
            .AsNoTracking().ToArrayAsync(cancellationToken);

И часть проектов остаются с незаполненной коллекцией Task.

Если попробовать взять какой-то один конкретный проблемный проект и заинклудить в обе стороны:

        var project = context.Projects.Where(t => t.Id == 3220).Include(x => x.Tasks).ToList();
        var tasks = context.Tasks.Where(t => t.ProjectId == 3220).Include(x=>x.Project).ToList();

То все работает...

Что за ерунда такая?


Ответы (2 шт):

Автор решения: xxramm

Скорее всего ошибка в настройке контекста. Других не нашел.

modelBuilder.Entity<Project>(entity =>
{
   // Тут нет ключа
    entity.HasMany(x => x.Tasks)
            .WithOne(x => x.Project);
});

modelBuilder.Entity<Task>(entity =>
{
    entity.HasOne(t => t.Project)
          .WithMany(p => p.Tasks)
          .HasForeignKey(t => t.ProjectId);
});
→ Ссылка
Автор решения: iluxa1810

В общем, ошибка была глупой и очень не примечательной...

При биндингах одной из этих сущностей забыли, что она имеет составной PK и указали, как PK только ID. Из-за этого его так штормило при выборках...

Самое интересное, что EF молча считывал данные из таблицы и ему было пофигу на то, что поле отмеченное, как PK в биндингах имело дубли...

→ Ссылка