我想使用[DataSourceRequest] DataSourceRequest request
和ToDataSourceResult
实现服务器端分页/排序/等
我已经使用LINQ和EF完成了数百次,但是,当前项目需要我们利用context.Database.SqlQuery
调用的存储过程
除了在我也需要将参数传递到存储过程的情况下,这会导致错误:
我认为这样做的原因是Kendo的ToDataSourceResult
也在尝试将SQL参数附加到C#不喜欢的data
对象。
我在网上看到的一些解决方案是调用.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)。