如何使用 Dapper 执行插入和返回插入的身份?

2023-11-30

如何使用 Dapper 执行数据库插入并返回插入的身份?

我尝试过这样的事情:

string sql = "DECLARE @ID int; " +
             "INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff); " +
             "SELECT @ID = SCOPE_IDENTITY()";

var id = connection.Query<int>(sql, new { Stuff = mystuff}).First();

但这没有用。

@Marc Gravell 谢谢你的回复。 我已经尝试过你的解决方案,但是下面仍然有相同的异常跟踪

System.InvalidCastException: Specified cast is not valid

at Dapper.SqlMapper.<QueryInternal>d__a`1.MoveNext() in (snip)\Dapper\SqlMapper.cs:line 610
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in (snip)\Dapper\SqlMapper.cs:line 538
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param) in (snip)\Dapper\SqlMapper.cs:line 456

It does support输入/输出参数(包括RETURN值)如果你使用DynamicParameters,但在这种情况下,更简单的选项就是:

var id = connection.QuerySingle<int>( @"
INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff);
SELECT CAST(SCOPE_IDENTITY() as int)", new { Stuff = mystuff});

请注意,在较新版本的 SQL Server (2005+) 上,您可以使用OUTPUT clause:

var id = connection.QuerySingle<int>( @"
INSERT INTO [MyTable] ([Stuff])
OUTPUT INSERTED.Id
VALUES (@Stuff);", new { Stuff = mystuff});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Dapper 执行插入和返回插入的身份? 的相关文章

  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 我可以从 SQL Server 读取元数据来了解最后更改的行/表吗?

    我们有一个数据库hundreds的桌子 有没有某种metaSQL Server 中的数据源 我可以以编程方式查询以获取名称最后更改表和行 或者我们是否需要实施这个我们自己每个表中的字段称为上次更改日期时间 etc 就查明表最后一次修改的时间
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • 从 Excel 单元格捕获时间值

    我正在编写一个 Excel 应用程序 它将从 Excel 文件中读取和写入指定的值 并将它们显示给用户 但是 当我尝试从具有Number Format或键入的函数 hh min Hour Min 我无法准确地获得我想要的值 这是我的代码 w
  • MongoDB 中的反向数组字段

    我有一个集合 其中的位置字段以错误的顺序输入 location 38 7633698 121 2697997 当我尝试使用 在字段上放置二维索引时 db collection ensureIndex location 2d 我收到以下错误
  • 隐藏

    是的 我是一个 CSS 菜鸟 我正在尝试整理隐藏 div 的各种方法 例如 display none visibility hidden 还有更深奥的吗 忘记 JQuery JavaScript 事件 我只是想知道具有大量内容的 div 和
  • 如何将源文件夹添加到 Grails 应用程序

    我使用 STS 来开发 Grails 应用程序 并且需要使用 wsimport 实用程序生成的一堆类 为了不将我的源代码与自动生成的源代码混合在一起 我想添加单独的目录并将生成的类放在那里 如下所示 grails project class
  • 从 etree 中删除一个节点但留下子节点

    我正在遍历 XML 树 但从树中提取节点而留下其内部节点时遇到了一些麻烦 例如
  • Localized.strings 的字符编码,由 genstrings 生成

    在我的 ViewController swift 中 我有一个本地化字符串 TheOutLabel text NSLocalizedString hello comment The hello word 在终端中 为了生成 Localize
  • 如何在 AngularJS 应用程序中访问 Shibboleth SP 属性

    我是 SSO 和 Shibboleth 的新手 我已经在 Apache 服务器上成功实现了 Shibboleth SP 每当用户尝试访问受保护的资源时 都会根据 IDP 对用户进行身份验证 基本上 Shibboleth SSO 有以下 6
  • 分析内存转储以查找泄漏

    我们有一个 C NET 应用程序 其中存在内存泄漏 我使用 procdump 从生产机器上运行的应用程序实例获取内存转储 生产计算机运行 32 位 Windows XP 和 NET 4 0 exe配置设置为 net 4 0
  • C++ 测试框架:寻求推荐[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个可以在我的 Windows Visual Studio 机器上使用的 快速而肮脏 的 C 测试框架 这只是我在开发 所以它不一定是企业
  • 在本地使用 Git,然后合并并签入 StarTeam

    我的客户当前要求我们使用 StarTeam 来检查代码更改 我想从 StarTeam 中提取所有代码并设置一个本地 Git 存储库 以便我可以利用分支来对某些 JQuery 模块进行一些升级 有人对使用本地 Git 存储库然后检查 Star
  • Docker 无法启动已存在的服务

    Running docker compose up d我收到以下错误 Starting cr redis Starting cr rabbitmq Starting cr rabbitmq error Starting cr redis e
  • 将 HQL 与 MySQL 结合使用,如何在分组之前对结果集进行排序,以便选择正确的记录?

    有没有办法在单个查询中用 HQL 或可能使用 Hibernate Criteria 编写每组最大 n 查询 我正在努力解决与此类似的问题 Schema 书籍有 Publication date 书有作者 作者有出版商 我手头有一个出版商 以
  • 取消嵌套包含列表的数据框

    我有一个包含列表的数据框 如下所示 Load packages library dplyr Create data frame df lt structure list ID 1 3 A structure list c 9 8 c 7 6
  • R 中 Data.Table 中的一对多左连接/合并

    如果您在其他地方知道这个问题的答案 请告诉我 但我搜索并阅读了大量与 data table 相关的联接主题以及包的介绍和常见问题解答 但仍然没有找到答案 本质上 我正在寻找类似灵活的左 连接之类的东西 我本以为直接设置 A B 的键就可以解
  • 将 Firebase Admin SDK 添加到 Unity 项目

    我是 Unity 和 C 的新手 对 C 和所有 NET 东西来说真是菜鸟 我想在我的 Unity 项目中使用 Firebase 实时数据库 我按照以下说明进行操作Firebase 文档进行设置 但在我创建了一个新的 p12 文件并添加后这
  • 使用 Pandas 将列转换为行

    所以我的数据集包含 n 个日期的一些位置信息 问题是每个日期实际上是不同的列标题 例如 CSV 看起来像 location name Jan 2010 Feb 2010 March 2010 A test 12 20 30 B foo 18
  • 私有成员函数,它采用指向同一类中私有成员的指针

    我怎样才能做到这一点 以下代码不起作用 但我希望它能解释这个想法 class MyClass private int ToBeCalled int a char b typedef MyClass FuncSig int a char b
  • Android中EditText的InputType

    我想要以下内容 应首先显示数字键盘 但应该可以更改为文本键盘并输入一些字母 我问了几乎同样的问题并接受了答案 Android中EditText的InputType 但现在我发现一些奇怪的行为 设置输入类型 to Number 可以将键盘更改
  • 设置axes.linewidth而不更改rcParams全局字典

    因此 似乎无法执行以下操作 它会引发错误 因为axes没有set linewidth方法 axes style linewidth 5 axes rect 0 1 0 1 0 9 0 9 axes axes rect axes style
  • 如何使用 Dapper 执行插入和返回插入的身份?

    如何使用 Dapper 执行数据库插入并返回插入的身份 我尝试过这样的事情 string sql DECLARE ID int INSERT INTO MyTable Stuff VALUES Stuff SELECT ID SCOPE I