c# - EF Core - 检查孩子的存在
问题描述
带有 SQL Server 后端的 EF Core。父实体包含一组子实体。在特定情况下,我对整个子集合不感兴趣,只对是否存在任何子的信息感兴趣——我想避免从数据库中检索整个集合。在 T-SQL 中,我可以使用带有计数的子查询或带有 TOP(1) 的 CROSS APPLY,但是如何在 EF 中实现这一点?
假设模型看起来像这样(为简洁起见,代码不完整):
class Invoice
{
DateTime InvoiceDate { get; set; }
Customer Customer { get; set; }
int CustomerId { get; set; }
...
...
ICollection<InvoicePosition> Positions { get; set; }
}
internal virtual DbSet<Invoice> InvoiceSet { get; set; }
我这样读取数据:
var invoices = context.InvoiceSet
.Include(i => i.Customer).ThanInclude(c => c.Country)
.Where(i => ...)
.OrderBy(i => ...)
.Skip(...).Take(...)
.AsAsyncEnumerable();
await foreach (var invoice in invoices)
{ ... }
我可以包含职位并检查是否存在,但是如何在数据库端执行此操作?
编辑:我需要 InvoiceSet 中的其他属性 - bool HasPositions:
class Invoice
{
DateTime InvoiceDate { get; set; }
Customer Customer { get; set; }
int CustomerId { get; set; }
...
bool HasPositions { get; set; }
...
ICollection<InvoicePosition> Positions { get; set; }
}
如何获取这个新属性的数据?如果可以使用 Linq Query 完成,请提供一个示例,如何将我的阅读方法转换为查询。
解决方案
.Where(i => i.Positions.Any())
推荐阅读
- html - 如何将表单元素移动到中心?
- java - 如何从名字中取出 3 个随机字母,从姓氏和电话号码中取出 2 个字母,从给定字符串“specialChar”中取出 1 个符号
- node.js - 如何使用带有 mongodb 的 nodejs 更新数组中的嵌套对象?
- python - 如何使用相当于 excel averageifs 在 python 数据框中创建新列
- python - 为什么这不在一行上打印我的列表?
- javascript - 将本地存储项添加到 javascript 数组中
- javascript - Javascript:从驱动器和网络摄像头获取高分辨率照片,在 480x270 画布上绘制,然后将高分辨率保存在数据库中
- wordpress - 将标签放在元素或表单中的字段之间
- python - 查找 5000 个不同 csv 的平均值以汇总在一个 python 列表中
- google-ai-platform - Google AI 平台错误:无法解析行,不是有效的 json:找不到字段:消息中的 text_snippet