如何使用 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 执行插入和返回插入的身份? 的相关文章

  • is_integral 与 is_integer:其中之一是多余的吗?

    是积分 http en cppreference com w cpp types is integral and 是整数 http en cppreference com w cpp types numeric limits is inte
  • 如果两个线程同时访问同一个 bool 变量会发生什么?

    我有一个跨平台 C 程序 其中使用 boost 库创建异步计时器 我有一个全局变量 bool receivedInput false 一个线程等待并处理输入 string argStr while 1 getline cin argStr
  • 使用空函数调用 hana::is_valid 的用途是什么?

    Boost Hana https www boost org doc libs 1 61 0 libs hana doc html index html offers boost hana is valid https www boost
  • 如何通知父线程所有子线程都已终止?

    我有一个控制台应用程序正在移植到 WPF 该应用程序有 3 个工作线程 在将一些输出结果打印到屏幕上之前 这些线程都连接到主线程 我的理解是 如果我尝试在 WPF 应用程序中执行相同的操作 GUI 将被阻止并且不会响应用户 那么如何通知父线
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 将 void *user_data 转换为对象

    我该如何投射void something到标准 C 中的对象 具体来说我想投void userdata to std map
  • 计算复杂数组的abs()值的最快方法

    我想计算 C 或 C 中复杂数组元素的绝对值 最简单的方法是 for int i 0 i lt N i b i cabs a i 但对于大向量来说 速度会很慢 有没有办法加快速度 例如使用并行化 语言可以是 C 或 C 鉴于所有循环迭代都是
  • 如何在没有聚合函数的情况下在sql server中创建枢轴查询

    我正在使用 MS SQL SERVER 2008 并且有以下数据 select from account PERIOD ACCOUNT VALUE 2000 Asset 205 2000 Equity 365 2000 Profit 524
  • 我的 WPF 应用程序未触发 MainWindow_Loaded

    我目前正在关注Pluralsight C Fundamentals Part 1并在Classes and Objects视频部分指导我在 Visual Studio 中创建一个新的 WPF 应用程序并填写代码 这导致以下结果 namesp
  • 修剪 UIImage 边框

    这是我想要修剪的图像的示例 我想去掉图像周围的边框 在本例中是顶部和底部的黑条 我在Github上找到了一个库 CKImageAdditions https github com cmkilger CKImageAdditions 但是它似
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 从套接字读取 C HTTP

    我想知道如何判断是否已从套接字接收到所有数据 这是一个简单的网络代理 现在我正在处理请求部分 所以发送的内容应该以 r n r n 结尾 我不知道请求会持续多久 我在这里读过一些帖子 说我应该检查读取函数是否返回 0 但其他人说0只在客户端
  • EF Core 一对多关系列表返回 null

    我正在尝试学习如何在 EF Core 中正确利用 DbContext 我有一个团队课程 public class Team public int ID get set public string Name get set public bo
  • 修改正在运行的可执行文件的资源内容

    All 我将应用程序设置存储在资源中 当我的程序首次加载时 我使用 WinAPI 读取指定的资源 然后我解析检索到的字节数据 这对我来说完美无缺 现在假设用户更改了我的应用程序中的设置 他 她检查复选框控件 我想将更新的设置保存到我的资源中
  • 为什么这个单独的定义会导致错误?

    挑战 我有这段代码无法编译 你能找出问题所在吗 有一次让我很头疼 header namespace values extern std string address extern int port cpp file std string v
  • 为什么未到达的 try-catch 块会增加运行时间?

    我目前正在创建自己的容器库 但我已经看到无法访问 if 语句无效 try catch阻止增加运行时间 这是我的测试 Vector cpp template
  • 在Framework 4.6项目中使用.net core DLL

    我已经在 net core 2 0 中构建了一个 DLL 现在我想在使用 net 4 6 1 框架的 WinForms 项目中使用它 我可以引用该 dll 但收到 System IO FileLoadException 表示找不到 Syst
  • asp.net mvc GET 请求上的 formcollection 应该为空

    我正在发布一个简单的操作 public void Login FormCollection formCollection 即使查询字符串值很少 formcollection Count is 0 是靠行为吗 FormCollection 使
  • 如何使用 Ioc Unity 注入依赖属性

    我有以下课程 public interface IServiceA string MethodA1 public interface IServiceB string MethodB1 public class ServiceA IServ

随机推荐

  • 从 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