c# - Sql Query with Dapper 返回一个空结果,但是来自 profiler 的请求结果不为空
问题描述
我有用 dapper 制作的 SQL 查询,它返回一个空结果。但是,如果我运行 SQL Profiler 并执行我在那里看到的请求,结果将不为空。
这是我的代码
public class Parameters
{
public DateTime? SinceDate { get; set; }
public DateTime? UntilDate { get; set; }
public byte NetworkId { get; set; } = 7;
}
var parameters = new Parameters()
{
SinceDate = startDate,
UntilDate = endDate,
NetworkId = networkId,
};
DynamicParameters requestParameters = new DynamicParameters();
requestParameters .Add("@sinceDateFilter", parameters.SinceDate, DbType.DateTime);
requestParameters .Add("@untilDateFilter", parameters.UntilDate, DbType.DateTime);
requestParameters .Add("@networkId", parameters.networkId, DbType.Byte);
using (var secondConn = new SqlConnection(ConnectionString))
{
var query = secondConn.Query<ReportRow>(
"[dbo].[GET_Report] @sinceDateFilter, @untilDateFilter, @NetworkId",
requestParameters,
commandTimeout: 500
);
Groups = query.ToList();
}
public class ReportRow
{
public string Network { get; set; }
public ulong Clicks { get; set; }
public decimal Profit { get; set; }
}
在调试器中,我看到我的“组”是空的,但是如果我运行 sql profiler,我会看到这段代码发出的请求是
exec sp_executesql N'[dbo].[GET_Report] @sinceDateFilter, @untilDateFilter, @networkId',N'@sinceDateFilter datetime,@untilDateFilter datetime, @networkId tinyint',@sinceDateFilter='2019-04-01 00:00:00',@untilDateFilter='2019-04-02 00:00:00',@networkId=7
如果我从管理工作室执行此操作,我会看到包含数据的表格:
+---------+--------+--------+ | 网络 | 点击次数 | 利润 | +---------+--------+--------+ | 网络1 | 38835 | 0.45 | | 网络2 | 38835 | 0.35 | +---------+--------+--------+
解决方案
如果要通过存储过程执行。
您可以尝试设置commandType
参数。
设置与CommandType.StoredProcedure
using (var secondConn = new SqlConnection(ConnectionString))
{
var query = secondConn.Query<ReportRow>(
"[dbo].[GET_Report]",
requestParameters,
commandTimeout: 500,
commandType: CommandType.StoredProcedure
);
Groups = query.ToList();
}
推荐阅读
- spring - MockRestServiceServer 可以等待给定的时间来监视 .expect(ExpectedCount.never())
- c# - 即使路径已更改,如何连接数据库文件?
- javascript - Vue 没有看到我的对象从 vuex 获取的更新
- postgresql - 优化 Postgres 查询涉及多个函数、动态 sql 和多态
- java - Spring boot:使用 Spring 文档中的 logback-spring.xml 时打印 CONSOLE_LOG_PATTERN_IS_UNDEFINED
- linux - 如何在 Linux 上以 root 身份运行动态库 - 使用 systemd sdbus 客户端界面?
- sql - SQL:从大于发布日期的数组列中选择 MIN 日期
- javascript - 无法回溯以使用递归 javascript 数独求解器
- javascript - Instagram 之类的语音记录器 React Native
- python-3.x - 如何使用 matplotlib 和 networkx 开发矢量化导航图