c# - 完整数据集而不是 Top 1000 EF Core
问题描述
我正在尝试从表中返回前 1000 行,但是使用 EF Core,我在 .Take(1000) 运行之前获得了完整的数据集。
API
[HttpGet("MyThing/{id}")]
public List<MyObj> ItemsReport(long id)
{
response = new List<MyObj>();
response = _reporting.GetNewEntries(id);
return response;
}
报告
public virtual List<MyObj> GetNewEntries(long id)
{
var newEntries = new List<MyObj>();
var entries = _DbContext.ReportNewEntries
.OrderBy(a => long.Parse(a.Id))
.Where(a => long.Parse(a.Id) > id)
.Take(1000);
newEntries.AddRange(entries);
return newEntries;
}
数据库上下文
DbSet<MyObj> ReportNewEntries{ get; set; }
我想要的查询是这样的:
SELECT TOP (1000) *
FROM dbo.ReportNewEntries
WHERE CONVERT(bigint, Id) > 0
ORDER BY CONVERT(bigint, Id)
根据 SQL 探查器,我当前的查询是:
SELECT * FROM dbo.ReportNewEntries
该表是单片的,所以我想一次访问 1000 行。对我犯的错误有什么建议吗?
解决方案
你用的是什么数据库?什么版本的 .NetCore?什么数据库提供商?一些 db 提供程序可能在将一些 linq 语句转换为 sql 时遇到问题。在这种情况下,将在数据库中运行不同的查询(通常获取所有数据)并在内存中执行 linq。
推荐阅读
- scala - Flink 的 operator state 示例不会编译(java.lang.Iterable vs. scala.collection.Iterable)
- jquery - 使用flask和jquery从和Oauth2重定向中检索参数
- amazon-web-services - AWS Ec2 - 跨多个子网/可用区的启动模板
- safari - Bootstrap 4 网格问题 Safari
- react-native - 开玩笑测试中未定义的道具
- ruby - 通过迭代重构 Ruby If/Else 并推入数组
- php - 用于显示 woocommerce 产品档案的模板在登录和退出 Wordpress 时看起来不同
- mongodb - 为什么嵌套的 MongoDB 模式比平面模式慢?
- reactjs - Bootstrap 导航栏坏了
- javascript - 赛普拉斯接受音频等浏览器权限