gpt4 book ai didi

sql-server - 使用存储过程的服务器端剑道分页

转载 作者:行者123 更新时间:2023-12-02 10:26:51 24 4
gpt4 key购买 nike

我想使用[DataSourceRequest] DataSourceRequest请求ToDataSourceResult实现服务器端分页/排序等

我已经使用 LINQ 和 EF 完成了数百次此操作,但是,当前的项目要求我们使用由 context.Database.SqlQuery 调用的存储过程

这工作正常,但在我需要将参数传递到存储过程中的情况除外,这会导致错误:

The SqlParameter is already contained by another SqlParameterCollection.

我认为其原因是 Kendo 的 ToDataSourceResult 还尝试将 SQL 参数附加到 data 对象,而 C# 不喜欢这种情况。

我在网上看到的一些解决方案是调用 .ToList(),它确实有效,但是,它有点达不到目的,因为它仍然会查询所有结果。

var data = context.Database.SqlQuery<TicketVm>("usp_FleetRentedEquipments @analyst",
new SqlParameter("@analyst", analyst));
return data.ToDataSourceResult(request);

最佳答案

在 ToDataSourceResult 方法内,查询至少使用两次 - 一次是在调用 Count() 时,一次是为了提取数据。这会导致两次使用 SQL 参数集时出现错误。您可能只能这样做:

var data = context.Database.SqlQuery<TicketVm>($"usp_FleetRentedEquipments {analyst}");
return data.ToDataSourceResult(request);

并且要非常小心,“分析师”不是 SQL 注入(inject)。

关于sql-server - 使用存储过程的服务器端剑道分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com