实体框架 6 中的 LINQ 具有大型 .任意()



我有一个 EF6 查询,它获取 ID 列表并执行查询:

public IList<Audit> AuditsByIDs(List<int> ids)
{
    return _db.Audits
        .Include(p => p.User)
        .Where(p => ids.Any(i => i == p.Id)).ToList();
}

适用于少量 id,但当它达到数百个时,我会收到错误:

SQL 语句的某些部分嵌套得太深。 重写 查询或将其分解为较小的查询。

如何让查询仅在传入的 id 时才返回?我无法更改数据库:(

改用Contains

public IList<Audit> AuditsByIDs(List<int> ids)
{
    return _db.Audits
        .Include(p => p.User)
        .Where(p => ids.Contains(p.Id)).ToList();
}

这应该在生成的 SQL 查询中转换为IN

最新更新