【发布时间】:2020-07-14 15:56:27
【问题描述】:
我的任务是用使用 Dapper 的 .Net Core 应用程序来替换企业有时会购买的那些讨厌的“基于 GUI 的编程”的东西(现在他们已经意识到这是一个可怕的错误并制作了垃圾代码)。
我不能按原样更改存储的过程。
被调用的 proc 包含两个值,一个 select 语句和一个 return 值,这两个值都由应用程序以某种方式检索。我们看不到应用程序是如何做到的;这在专有的“核心”库中被混淆了。它看起来像这样:
--things it does
Select Prop1, Prop2, Prop3 from TheTable;
Return 0; --success
(我无法粘贴实际查询,因为我们有激进的网络安全,但这是其背后的基本逻辑。没有 OUT 参数。)
当我使用 Dapper 的 ExecuteAsync( 方法时,我只能得到一个返回值 0 或 null,具体取决于返回值。我尝试将其更改为 Query ,但我总是得到空值,即使有一个值给 SSMS 中的 proc 相同的参数。
var result = await _dbc.QueryFirstOrDefaultAsync<dynamic>("storedproc", paramsObject);
我怎样才能获取 select 语句的结果不改变存储过程以返回两个变量?
【问题讨论】:
-
请向我们展示您正在使用的简洁代码?存储过程是什么样子的?是用OUT参数吗?
标签: c# sql .net stored-procedures dapper