我的查询根本不起作用并抛出错误

Posted

技术标签:

【中文标题】我的查询根本不起作用并抛出错误【英文标题】:My query is not working at all and throwing error 【发布时间】:2021-09-19 16:25:05 【问题描述】:

我正在尝试使用 fluent API 来包含另一个表,但想从父表引用一些键到父表,但是当我重新加载页面时会引发一些错误。

这是我的查询。

var allocations = _context.TblCourseAllocations
                
                .Include(ca => ca.Department)
                .Include(ca => ca.Department.TblCourses)
                .Include(ca => ca.Department.TblPrograms)
                .Include(ca => ca.Department.TblSemesters.Where(s => s.ProgramCode.Equals(ca.ProgramCode)))
                .Where(ca => ca.EmployeeCode.Equals(employee.EmployeeCode) 
                             & ca.SemesterName.Equals(semester) 
                             & ca.PaymentStatus.Equals("Regular/Unpaid")
                )
                .AsSplitQuery()
               .AsEnumerable().OrderBy(d => d.ProgramSession).GroupBy(ca => ca.CourseCode).ToList();

在 tblSemesters 上,我的条件不起作用,但我想实现多个条件。任何帮助或意见将不胜感激。

错误:

处理请求时发生未处理的异常。

InvalidOperationException:LINQ 表达式 'DbSet() .Where(t3 => EF.Property(EntityShaperExpression: EntityType: TblDepartment ValueBufferExpression:ProjectionBindingExpression: 内部 IsNullable: True , "DepartmentCode") != null && object.Equals( objA:EF.Property(EntityShaperExpression:EntityType: TblDepartment ValueBufferExpression:ProjectionBindingExpression: 内部 IsNullable: True , "DepartmentCode"), objB: EF.Property(t3, "DepartmentCode"))) .Where(t3 => t3.ProgramCode.Equals(ca.ProgramCode))' 无法翻译。 要么以可翻译的形式重写查询,要么切换 通过插入对“AsEnumerable”的调用来明确地进行客户评估, “AsAsyncEnumerable”、“ToList”或“ToListAsync”。看 https://go.microsoft.com/fwlink/?linkid=2101038 了解更多信息。

提前致谢

【问题讨论】:

至少您可以准确地告诉我们这些错误是什么。 如果您可以发布错误,那将很容易帮助您 justpaste.it/3gyw1 @Darshani 请检查我的错误 请edit您的问题并添加错误作为文本。问题的基本部分应包含在问题本身中。此外,它通常还有助于包含类和映射代码(如果存在)以及确切的 EF 核心版本(我猜是 5,因为过滤了 Include)。 嗨@MalikHamzaYounas,你能分享相关的表定义,以便我们更容易重现问题并帮助你解决它吗? 【参考方案1】:

您不能在 EF Core 3.x 上使用 where 子句来包含,如下行所示:

.Include(ca => ca.Department.TblSemesters.Where(s => s.ProgramCode.Equals(ca.ProgramCode)))

您没有输入您正在使用的 EF Core 版本,但我认为这是实际问题。此功能仅在 EF Core 5 上添加。见:https://docs.microsoft.com/en-us/ef/core/querying/related-data/eager#filtered-include

【讨论】:

这不起作用,因为 CourseAllocation 包含 Department 的外键,然后它链接到 tblsemesters,我想从 courseallocation 表调整到 tblsemesters 它不起作用,因为 ef core 3.x 不支持 Where on Include 子句.....

以上是关于我的查询根本不起作用并抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

pyqtgraph 交叉小部件绘图不起作用?

MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误

快速转场不起作用?

Laravel 5 App - AJAX Post请求不接受令牌并抛出500内部服务器错误

控制器在离子框架中不起作用

错误:Xcode 4.6.3 - 方法 dragFromToForDuration 根本不起作用