我如何执行插入和小巧玲珑返回插入的身份? [英] How do I perform an insert and return inserted identity with Dapper?

查看:223
本文介绍了我如何执行插入和小巧玲珑返回插入的身份?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何执行插入到数据库,并与小巧玲珑返回插入的身份?

我已经试过这样的事情:

  SQL字符串=DECLARE @ID INT;+
             INSERT INTO [MyTable的]([东西])VALUES(@Stuff);+
             SELECT @ID = SCOPE_IDENTITY();VAR ID = connection.Query< INT>(SQL,新{东西=的MyStuff})(第)。

但我以前不工作。

@Marc Gravell感谢,答复。
我试过您的解决方案,但是,仍然同样异常跟踪低于

  System.InvalidCastException:指定的转换无效在Dapper.SqlMapper< QueryInternal> d__a`1.MoveNext()的(剪断)\\小巧玲珑\\ SqlMapper.cs:610线
在System.Collections.Generic.List`1..ctor(IEnumerable`1集合)
在System.Linq.Enumerable.ToList [TSource](IEnumerable`1源)
在Dapper.SqlMapper.Query [T](CNN的IDbConnection,SQL字符串,对象参数,IDbTransaction交易,布尔缓冲,Nullable`1的CommandTimeout,Nullable`1命令类型)的(剪断)\\小巧玲珑\\ SqlMapper.cs:538线
在Dapper.SqlMapper.Query [T](CNN的IDbConnection,SQL字符串,对象参数)在(剪断)\\小巧玲珑\\ SqlMapper.cs:456线


解决方案

它做的支持的输入/输出参数(包括返回 value)如果您使用 DynamicParameters ,但在这种情况下,简单的选择很简单:

  SQL字符串= @
INSERT INTO [MyTable的]([东西])VALUES(@Stuff);
SELECT CAST(SCOPE_IDENTITY()为int);VAR ID = connection.Query< INT>(SQL,新{东西=的MyStuff})单()。

How do I perform an insert to database and return inserted identity with Dapper?

I've tried something like this:

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();

But it did't work.

@Marc Gravell thanks, for reply. I've tried your solution but, still same exception trace is below

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 input/output parameters (including RETURN value) if you use DynamicParameters, but in this case the simpler option is simply:

string sql = @"
INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff);
SELECT CAST(SCOPE_IDENTITY() as int)";

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

这篇关于我如何执行插入和小巧玲珑返回插入的身份?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆