То, чего вы пытаетесь достичь, можно легко сделать с помощью Стремительная загрузка , о которой можно прочитать подробнее здесь или здесь . Ошибка, которую вы получаете, состоит в том, что вы не можете объединить LINQ с необработанным SQL (Include
и Select
в вашем случае).
Другими словами, вы пытаетесь загрузить несколько объектов , чего можно достичь с помощью кода, подобного следующему:
var info = context.Info.Include("SubInfo.SubSubInfo").ToList();
Изменить начало
Вы хотите загрузить несколько уровней, что достигается с помощью методов Include
и ThenInclude
. Примером будет
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ToList();
}
и для вашего контекста это будет:
var info = context.Info.
Include(subInfo => subInfo.SubInfo).
ThenInclude(subSubInfo => subSubInfo.SubSubInfo).
ToList();
, где SubInfo
и SubSubInfo
- свойства навигации ваших моделей. Также учтите, что вы должны указать, используете ли вы .NET Core или .NET Framework , так как .NET Core не поддерживает Ленивая загрузка .
Но я вижу, что @AliJP уже ответил на ваш вопрос.
Редактировать конец
Если вы хотите узнать больше об этой теме, попробуйте прочитать о Eager Loading и Lazy Loading .