我的 Linq to SQL 查询分页逻辑未在数据库中执行
如何使 Linq to SQL 查询逻辑在服务器上执行?
我创建了一个 Linq 查询并将其作为 IEnumerable 返回。查询的后续操作(例如 .Count() 或 .Take(5))在 CLR 中的客户端上计算,而不是在服务器上计算。
How can I make my Linq to SQL query logic execute on the server?
I have a created a Linq query and returned it as an IEnumerable. Subsequent operations on the query such as .Count() or .Take(5) are evaluated on the client in CLR, rather than on the server.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
转换为 IEnumerable 将导致执行查询 - 因此数据现在位于客户端。
如果要在服务器端执行分页,则应该在 IQueryable 仍处于后期执行时执行这些操作。
Converting to IEnumerable will cause the query to be executed - as a result the data is now on the client side.
If you want to execute paging on the server side, you should perform those operations while it is still a late executing IQueryable.
IEnumerable 就是问题所在。将 Linq.DataQuery 作为 IQueryable 返回允许 Linq to SQL 向查询添加其他操作。当我描述问题时就弄清楚了这一点。
IEnumerable was the problem. Returning the Linq.DataQuery as an IQueryable allows Linq to SQL to add additional operations to the query. Figured this out as I was describing the problem.