Такая ситуация: есть метод ListAsync в методе репозитория, примерно реализован вот так:
public virtual async Task<IEnumerable<TEntity>> ListAsync(
params Expression<Func<TEntity, object>>[] includeProperties)
{
IQueryable<TEntity> query = this.QueryableEntities;
if (includeProperties != null)
{
foreach (Expression<Func<TEntity, object>> includeProperty in includeProperties)
{
query = query.Include(includeProperty);
}
}
return await query.AsNoTracking().ToListAsync();
}
Параметр includeProperties говорит какие вложенные свойства нужно тоже загрузить. Есть у меня ещё три сущности:
class Image
{
public Guid ImageGuid { get; set; }
public List<ImageTag> ImageTags { get; set; }
}
class ImageTag
{
public Guid ImageGuid { get; set; }
public Image Image { get; set; }
public int TagId { get; set; }
public Tag Tag { get; set; }
}
class Tag
{
public int TagId { get; set; }
public string Name { get; set; }
public List<ImageTag> ImageTags { get; set; }
}
Теперь я хочу загрузить список всех Image. Через ImageRepository пишу следующий код:
imageRepository.ListAsync(
(img) => img.ImageTags.Select(t => t.Tags));
Но данная реализация выкидывает исключение: Lambda expression used inside Include is not valid. Подскажите, пожалуйста, как правильно реализовать загрузку вложенных свойств без ThenInclude в EF Core?