ฉันจะทำการแทรกไปยังฐานข้อมูลและส่งกลับข้อมูลประจำตัวที่แทรกด้วย 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
numeric
ใช่มั้ย? อาจใช้รหัสเดิมของคุณและselect @id
? (นี่เป็นเพียงการเพิ่มนักแสดง) ฉันจะทำบันทึกเพื่อให้แน่ใจว่างานนี้โดยอัตโนมัติในอนาคตสร้าง dapper ตัวเลือกอื่นสำหรับตอนนี้คือselect cast(SCOPE_IDENTITY() as int)
- อีกครั้งน่าเกลียดเล็กน้อย ฉันจะแก้ไขสิ่งนี้