【发布时间】:2015-08-15 20:28:28
【问题描述】:
我正在使用 Microsoft Visual Studio Express 2012 for Web 来开发 MVC5 应用程序。我想使用 Dapper dot net 获取最后插入的 ID。我在这里得到了解决方案,但他们正在使用 SQL Server 2012 (Management Studio),但是当我在代码中运行查询时,返回值是错误的。这是我已经尝试获取最后插入的 ID 的代码片段
SqlConnection _db = new SqlConnection("String");
string query_1 = @"DECLARE @InsertedRows AS TABLE (user_id int);Insert into users (stuff) OUTPUT Inserted.user_id INTO @InsertedRows values(@stuff); SELECT user_id FROM @InsertedRows";
string query_2 = @"Insert into users (stuff) OUTPUT Inserted.user_id values(@stuff);";
string query_3 = @"Insert into users (stuff) values(@stuff); SELECT SCOPE_IDENTITY()";
1. var id = _db.Query<int>(query_x, new { stuff = @stuff });
2. var id = _db.Execute(query_x, new { stuff = @stuff });
但在这两种情况下 ID 的值都是 1 但不是实际结果。但是当我在 SQL management Studio 上运行相同的查询时,一切正常。请帮助解决这个问题。
【问题讨论】:
-
OUTPUT Inserted仅供参考,这可能比使用 SCOPE_IDENTITY 慢,并且已在 SQL Server 2008 R2 Service Pack 1 的更新 #5 中修复
标签: sql-server asp.net-mvc visual-studio-2012 asp.net-mvc-5