我如何执行插入和小巧玲珑返回插入的身份? [英] How do I perform an insert and return inserted identity with Dapper?
本文介绍了我如何执行插入和小巧玲珑返回插入的身份?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我如何执行插入到数据库,并与小巧玲珑返回插入的身份?
我已经试过这样的事情:
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屋!
查看全文