Этот вопрос был рассмотрен для MSSQL здесь:
Как мне выполнить вставку и вернуть вставленное удостоверение с помощью Dapper?
но это решение не работает с mysql.
Чтобы преобразовать LAST_INSERT_ID ()
в целое число с помощью mysql, вы должны сделать следующее:
SELECT CAST (LAST_INSERT_ID () AS UNSIGNED INTEGER);
Трассировка стека:
Dapper.d__13`1.MoveNext() in sqlMapper.cs:607
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +159
System.Linq.Enumerable.ToList(IEnumerable`1 source) +36
Dapper.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in sqlMapper.cs:535
Кто-нибудь решил эту проблему в MySQL?
РЕДАКТИРОВАТЬ:
Мне удалось заставить эту работу работать со следующим:
var id = connection.Query("SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);").Single();
Возможно, не идеально, но это работает.