相关疑难解决方法(0)

EF LINQ包含多个嵌套实体

好的,我有三层实体,具有以下层次结构:课程 - >模块 - >章节

这是最初的EF LINQ声明:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters))
                .Single(x => x.Id == id); 
Run Code Online (Sandbox Code Playgroud)

现在,我想要包含另一个名为Lab的实体,该实体与课程相关联.

如何包含实验室实体?

我尝试了以下但它不起作用:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
                .Single(x => x.Id == id); 
Run Code Online (Sandbox Code Playgroud)

关于包含第二实体的任何想法?

任何建议或信息都将受到高度赞赏.谢谢!

.net linq entity-framework asp.net-mvc-3 entity-framework-5

148
推荐指数
5
解决办法
16万
查看次数

如何在Entity Framework Core中传递具有多个级别的lambda'include'?

我有一个存储库,可以获得'include'的lambda表达式.

public TEntity FirstOrDefault(Expression<Func<TEntity, bool>> predicate, params Expression<Func<TEntity, object>>[] includePaths)
    {
        return Context.Set<TEntity>().Includes(includePaths).FirstOrDefault(predicate);
    }
Run Code Online (Sandbox Code Playgroud)

在EF的早期版本中,我在服务层中使用它,例如:

var plan = _unitOfWork.PlanRepository
            .FirstOrDefault(
                p => p.Id == id, 
                include => include.PlanSolutions.Select(ps => ps.Solution)
            );
Run Code Online (Sandbox Code Playgroud)

其中'PlanSolutions'是一个集合,'Solution'是一个嵌套在'PlanSolution'中的属性.

但是现在这段代码出错了:

InvalidOperationException:属性表达式'include => {来自[include]中的PlanSolutions ps..PlanSolutions select [ps] .Solution}'无效.表达式应表示属性访问:'t => t.MyProperty'.有关包含相关数据的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=746393.

现在看来我不能使用'Select'方法来获取多个级别包含,但我也不能使用Microsoft建议的'ThenInclude'方法,因为查询本身位于存储库内部,服务没有访问.有没有办法治愈它?

c# asp.net lambda include entity-framework-core

2
推荐指数
3
解决办法
1921
查看次数