我的查询根本不起作用并抛出错误
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 子句.....以上是关于我的查询根本不起作用并抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误