c# - EF Core 5 现在如何在 .Include 中硬转换属性?
问题描述
在升级到 EF Core 5 之前,我们可以进行c.Progresses
如下所示的转换。有人知道我现在如何正确使用它吗?
var case = caseRepository
.Many(c => c.Id == caseId)
.Include(c => c.Progresses as Progress) // this breaks
.ThenInclude(p => ProgressType)
.SingleOrDefault();
错误:
System.InvalidOperationException:'表达式'Convert(c.Progresses,Progress)'在'Include'操作中无效,因为它不代表属性访问:'t => t.MyProperty'。要定位在派生类型上声明的导航,请使用强制转换 ('t => ((Derived)t).MyProperty') 或 'as' 运算符 ('t => (t as Derived).MyProperty')。集合导航访问可以通过组合 Where、OrderBy(Descending)、ThenBy(Descending)、Skip 或 Take 操作进行过滤。有关包含相关数据的详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=746393。
编辑:这修复了它:
var case = caseRepository
.Many(c => c.Id == caseId)
.Include(c => c.Progresses)
.ThenInclude(p => (p as Progress).ProgressType)
.SingleOrDefault();
为什么升级到 EF Core 5 后需要进行此更改?
解决方案
推荐阅读
- javascript - 使用 print.js 打印多个 PDF 文件
- android - 在 androd studio 中将许多控件放置在一个类似框架的矩形中
- c++ - 可以在成员初始化器列表中调用虚函数吗?
- java - 在多对多映射的情况下没有得到预期的结果
- node.js - 为什么我的 React 应用程序在我的后端端口上启动?
- c# - 为什么我将 XPS 文件打印到收据打印机,但在纸上获取原始文件内容?
- ruby-on-rails - 如何使用 Rails 将外部 JSON 数据保存到 DB(sqlite)
- nsis - 如何从 NSIS 的部分中移动 NSD_OnBack 函数
- javascript - 使用javascript从字符串中提取字符串作为数组
- sql - 在sqlserver中如何从每个组中获取最后一个值(时间)