Esta pregunta ha sido cubierto para MSSQL aquí:fundido no válida al volver LAST_INSERT_ID mysql() usando dapper.net
How do I perform an insert and return inserted identity with Dapper?
pero esta solución no funciona con MySQL.
a emitir el LAST_INSERT_ID()
a entero con MySQL que tiene que hacer esto:
SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);
El seguimiento de pila es:
Dapper.<QueryInternal>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
Alguien ha resuelto este problema en MySQL?
EDIT:
he conseguido hacer este trabajo con lo siguiente:
var id = connection.Query<ulong>("SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);").Single();
Quizás no es ideal, pero funciona.
Estaba teniendo el mismo problema. Por alguna razón, no se lanzará a un int usando Dapper. Tienes que usar long, que degradarlo a un int en .net :(No sé si es un error con el Connector, MySQL o Dapper. – Sam
Acabo de recibir el mismo problema y descubrí que también regresó:) –
Puedes lanzar tanto tiempo en lugar de ulong y luego int. Otra rareza que encontré es que las columnas de bit (1) también se pasan como UInt64 (ulong). Mi sospecha es el conductor. –