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

如何执行对数据库的插入并使用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

回答:

如果使用,它确实 支持 输入/输出参数(包括RETURN值)DynamicParameters,但是在这种情况下,更简单的选项是:

string sql = @"

INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff);

SELECT CAST(SCOPE_IDENTITY() as int)";

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

以上是 如何执行插入并使用Dapper返回插入的身份? 的全部内容, 来源链接: utcz.com/qa/408562.html

回到顶部