entity-framework – 在Junction表上使用EF Core ThenInclude()
我正在将我的.NET Framework(EF6)代码转移到ASP.NET Core(EF Core),我偶然发现了这个问题.这是一些示例代码:
在EF6中,我使用Include()和Select()进行预加载: return _context.Post .Include(p => p.PostAuthor.Select(pa => pa.Author).Select(a => a.Interests)) PostAuthor是一个联结表,还有一个Junction表“AuthorInterest”,我不需要参与EF6(Select直接进入a.Interests). 无论如何,我可以看到在EF7中这是重做的,这意味着我现在应该使用ThenInclude()来嵌套查询.然而… return _context.Post .Include(p => p.PostAuthor) .ThenInclude(pa => pa.Select(pa2 => pa2.Author)) ...etc 由于Select()语句,上面的代码失败了.关于https://docs.efproject.net/en/latest/querying/related-data.html的文档似乎表明我不需要它,我可以立即访问Author,但是我在显示的最后一个lambda中得到了一个ICollection,所以我显然需要Select().我在查询中进一步查看了多个联结表,但为了简单起见,我们只关注第一个. 我该如何工作? 解决方法
不,你没有. EF Core Include / ThenInclude完全取代了EF6中使用的Select / SelectMany的需要.它们对集合和引用类型导航属性都有单独的重载.如果对集合使用重载,则ThenInclude对集合元素的类型进行操作,因此最后总是以单个实体类型结束. 在您的情况下,pa应该解析为您的联结表元素类型,因此应该可以直接访问作者. 例如,EF6包括链: .Include(p => p.PostAuthor.Select(pa => pa.Author).Select(a => a.Interests)) 转换为EF Core: .Include(p => p.PostAuthor).ThenInclude(pa => pa.Author).ThenInclude(a => a.Interests) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用ASP.NET MVC的Telerik控件:这是否违反
- asp.net – 从数据库加载时,DateTime.Kind设置为未指定,而不
- 如何在ASP.Net中设置TextBox的默认按钮?
- ASP.NET-MVC 2 RC最佳功能
- 在Mono上使用F#和ASP.NET Webforms
- asp.net-core – Razor模板中的特殊字符未正确编码
- asp.net – MVC 3部署到IIS6
- vbscript – Classic ASP中的URL编码
- asp.net-mvc – mvc将多个参数传递给局部视图
- ASP.net RequiredFieldValidator不阻止回发
- asp.net – 从网站下载后文件上的数字签名
- asp.net-mvc – HttpPostedFileBase总是在ASP.NE
- asp.net-mvc-3 – 我可以传递视图模型到动作链接
- asp.net-mvc-4 – 带ID的Html.Actionlink
- asp.net – 在IIS上运行Python和Django
- 如何查看ASP.NET OutputCache的内容?
- 如何在ASP.NET中提供resx文件?
- ASP.NET MVC3无法访问字体(静态内容)
- asp.net-mvc-3 – 不为CompareAttribute DataAnn
- asp.net – 当HTTPContext .Current为Nothing时如