使用 ORMLite 和输出参数的 ServiceStack MARS(多个活动结果集)

2023-11-27

ServiceStack ORMLite 很棒,我通常会避开 ORM 心态,更喜欢构建数据库,因为构建数据库而不是 1:1 类模型更有意义。也就是说,有几件事我似乎遇到了困难,我确信这只是我的无知。

First:

有没有办法使用 ORMLite 管理多个结果集?我知道可以使用 Dapper 来使用 QueryMultiple 方法,但无论出于何种原因,我都花了很长时间弄清楚如何使用 ServiceStack 的内置 Dapper 实现。

Second:

有没有办法使用 ORMLite 在存储过程调用中返回输出参数?

理想情况下,我想避开 MARS 和输出参数,理想情况下我想生活在一个理想的世界中:)

我正在使用 .NET Framework 4.5、SQL Server 2008 R2 和 ServiceStack 3.9.46。


事实证明,这确实非常简单(只要您知道实现它的魔力)。

基于文档和一个看似误导性的帖子表明Dapper“包含”在剃须刀中我认为当暗示 Dapper 是“内置的”时,它本质上是包含的库的一部分。

如果你愿意的话,就笑吧,但是对于我们这些没有开悟的人,我将概述如何使 Dapper 扩展显示出来。这就是神奇之处。

使用包管理器控制台执行以下命令:

Install-Package ServiceStack
Install-Package Dapper

将以下 using 语句 (C#) 添加到您的服务中:

using ServiceStack.OrmLite;
using Dapper;

现在,当您利用 Db 对象时,所有 OrmLite 和 Dapper 方法都将在那里。

要获取输出参数,现在非常简单:

var p = new DynamicParameters();

p.Add("@param1", request.stuff1);
p.Add("@param2", request.stuff2);
p.Add("@param3", dbType: DbType.Int32, direction: ParameterDirection.Output);

Db.Execute("schema.sp_stored_proc_name", p, commandType: CommandType.StoredProcedure);

response.outputStuff = p.Get<int>("@param3");

为了管理 MARS(假设您有一个返回两个结果集和一个输出参数的 SP):

p.Add("@param1", request.stuff1);
p.Add("@param2", request.stuff2);
p.Add("@param3", dbType: DbType.Int32, direction: ParameterDirection.Output);

var mars = Db.QueryMultiple("schema.sp_stored_proc_name", p, commandType: CommandType.StoredProcedure);

//firstSet contains the first result set
var firstSet = mars.Read().ToList();
//secondSet contains the second result set
var secondSet = mars.Read().ToList();

response.outputStuff = p.Get<int>("param3");

一旦你了解了其中的魔力,它就非常简单了:)

这是一个更复杂的例子.

希望这可以帮助其他人并节省他们一些时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ORMLite 和输出参数的 ServiceStack MARS(多个活动结果集) 的相关文章

  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 如何在发布期间复制未版本化的测试资源:执行?

    我的问题与 Maven 在发布时不会复制未跟踪的资源 https stackoverflow com questions 10378708 maven doesnt copy untracked resources while releas
  • TIFF 元数据的最大大小是多少?

    TIFF 文件元数据的单个字段中可以合并的元数据数量是否有最大限制 我想在 ImageDescription 字段中存储大文本 最多几 MB 没有具体的最大限制ImageDescription但是 整个 TIFF 文件存在最大文件大小 该最
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht
  • Redis如何存储关联数组?设置、散列还是列表?

    我对 Redis 的所有可用存储选项有点困惑 我想做一些简单的事情 并且不想过度设计它 我正在与phpredis and Redis v2 8 6 我有一个需要存储的简单关联数组 我还需要能够通过其键检索项目并循环遍历所有项目 a arra
  • PHPUnit 和 Zend Framework assertRedirectTo() 问题

    我在创建的测试中遇到了 assertRedirectTo 问题 下面是我使用的代码 public function testLoggedInIndexAction this gt dispatch this gt assertControl
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • Erlang dict的时间复杂度

    我想知道 Erlang OTP 是否dict模块是作为哈希表实现的 在这种情况下它是否能提供这样的性能 平均情况 Search O 1 n k Insert O 1 Delete O 1 n k 最坏的情况下 Search O n Inse
  • 升级到 Rails 6 时是否有一种编程方法可以检测 Zeitwerk::NameError?

    我目前正在将旧的 Rails 应用程序迁移到 Rails 6 好像项目中有些文件和里面定义的类不一致 运行应用程序测试时我没有看到此错误 但部署后我收到如下错误 Zeitwerk NameError expected file app my
  • 在 Nexus 7 2013 上更改方向时 CSS 媒体查询不起作用

    我目前正在我的笔记本电脑 台式电脑和 Nexus 7 2013 上测试 CSS 媒体查询 除了 Nexus 7 之外 它们在台式机和笔记本电脑上都运行良好 当我更改方向时 除非刷新页面 否则样式不会应用 例如 以纵向模式握住设备时 页面正常
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 通用可变参数的警告

    我声明了以下方法 private void mockInvokeDBHandler Map
  • 检测耳机何时插入

    有什么方法可以以编程方式确定耳机何时插入计算机 本质上 我只是想编写一个简单的工具 除非插入耳机 否则它会将我的声音静音 这可能吗 在 Windows Vista 及更高版本中 您可以使用设备到达和删除通知并检索端点外形规格来确定音频解决方
  • 在 MYSQL 中使用 SELECT DISTINCT

    做了很多搜索 但还没有真正找到我的 MYSQL 问题的答案 SELECT DISTINCT name type state country FROM table 结果 1 795 条记录 SELECT DISTINCT name FROM
  • 一些 startBrowsingForNearbyPlayersWithReachableHandler 问题

    我正在尝试使用 GameKit 进行本地匹配 GKMatchmaker sharedMatchmaker startBrowsingForNearbyPlayersWithReachableHandler 本质上 我正在尝试实现无界面的本地
  • 如何比较日期时间值,考虑到时区?

    我有两个DateTime变量 每个都有一个存储在变量中的时区 这样当我ToString格式包括 zzz 我得到一个字符串 包括 01 00 在设计时 我不知道时区是什么 我希望变量具有彼此不同的时区 我想比较两者DateTime值 以便我知
  • 如何在 Rust 中保存 PNG 图像?

    给定一个向量u8字节 每像素 4 字节 RGBA 如何将其保存到 PNG 文件 你可以使用 Piston 存储库中的镜像箱将原始缓冲区保存到磁盘 页面底部的示例向您展示了如何执行此操作 extern crate image fn main
  • 如何从xml文件中删除根元素

    亲爱的朋友们下午好 我的问题可能是这是一个非常基本的问题 即我们如何使用 xslt 从 xml 文件中删除根元素 下面给出了 Xml 文件示例
  • 确定在 python 中表示为字符串的值的类型

    当我使用 python 中的 csv 解析器读取逗号分隔的文件或字符串时 所有项目都表示为字符串 请参见下面的示例 import csv a 1 2 3 4 5 r csv reader a for row in r d row d 1 2
  • 寻找每个患者最接近的匹配时间

    我有两组数据 第一组 patient lt c A A B B C C C C arrival lt c 11 00 11 00 13 00 13 00 14 00 14 00 14 00 14 00 lastRow lt c Yes Ye
  • HQL 左连接:连接所需的路径

    我是 Hibernate 的新手 我有一个关于 HQL Left join 的问题 我尝试左连接 2 个表 患者和提供者 并不断收到 连接所需的路径 第二个表上的错误 如果有人可以帮助解决这个问题 我们将不胜感激 这是两个表 类的映射 病人
  • 在Docker中,如何在容器之间共享文件,然后将它们保存到镜像中?

    我想将容器共享卷中的数据提交到映像 我好像做不到 我的印象是 这在 Docker 中可能是不可能的 但这似乎与不将数据留在主机上的整个理念完全不一致 所以我认为必须有一种方法可以做到这一点 1 1号航站楼 在 1 号航站楼中启动一个带有卷的
  • 在 IE 中向 Array.prototype 添加函数会导致它作为元素推入每个数组

    我已将以下填充添加到Array在我的项目开始时 if Array prototype find Array prototype find function predicate if this null throw new TypeError
  • 将 Oracle 日期转换为 C# 日期时间

    我正在尝试从 Oracle 数据库中读取 Date 类型的记录 然后将其转换为 ASP NET c DateTime 对象 问题是 它获取日期而不是时间 我使用的命令是 DateTime dt Convert ToDateTime ds T
  • 将字符串文字传递给模板字符数组参数

    The CTRE库能够在编译时使用如下语法解析和验证正则表达式ctre match lt REGEX gt text to search 我知道这种语法仅在 C 20 中受支持 这很好 但无论我如何尝试 我都无法以这种方式使用字符串文字 这
  • 沙箱 JVM 可保护服务器免受不可信来源的侵害

    在接受和执行上传的不受信任的代码时 如何保护我的服务器免受恶意活动的影响 用户应该能够实现我的界面和给定的数据 执行一些计算并返回数据 不需要 I O 操作 当然也不需要线程 进程操作或其他愚蠢的行为 使用 java policy 文件可以
  • Google Apps 脚本:如何检查日历事件是否已被手动标记为删除

    我编写了一个 Google Apps 脚本 它将电子表格中保存的事件添加到谷歌日历中 每个事件都会存储日历事件的 ID 以便在电子表格中的事件发生修改时可以更新它 该事件仍然可以在日历中手动删除 因此我希望脚本能够检测到这一点并重新创建该事
  • Spring-boot tomcat 只能提供少于 10,000 个连接?

    我正在使用 spring boot 测试服务器 然而 我在测试过程中遇到了一些问题 我的测试是 随着 Web 套接字会话 客户端数量 的增加 服务器使用多少内存 1 000 个客户端 少于 9000 个会话 进行测试没有问题 但是 当我尝试
  • 如何使用spring的MockMultipartHttpServletRequest?得到“未找到多部分边界”

    显然我没有正确使用这个测试装置 我的 servlet 在 tomcat 中工作得很好 但是当我尝试使用这个模拟时 找不到多部分边界 请求被拒绝 因为未找到多部分边界 有一个答案here显示了如何使用文本文件来使用它 但该答案显式设置了边界字
  • 从 python 中的文件中读取逗号分隔的元组

    我正在尝试从一个文件中读取多个用逗号分隔的元组 示例输入文件如下所示 0 0 0 2 0 4 1 1 0 2 1 1 1 3 1 1 1 3 1 1 1 3 1 5 2 0 2 2 3 3 2 4 3 5 4 4 5 3 6 4 5 5 7
  • 使用 ORMLite 和输出参数的 ServiceStack MARS(多个活动结果集)

    ServiceStack ORMLite 很棒 我通常会避开 ORM 心态 更喜欢构建数据库 因为构建数据库而不是 1 1 类模型更有意义 也就是说 有几件事我似乎遇到了困难 我确信这只是我的无知 First 有没有办法使用 ORMLite