Questa domanda è stata coperta per MSSQL qui:fusione non valido al ritorno mysql LAST_INSERT_ID() utilizzando dapper.net
How do I perform an insert and return inserted identity with Dapper?
ma questa soluzione non funziona con mysql.
per lanciare l'LAST_INSERT_ID()
per intero con mysql che devi fare questo:
SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);
L'analisi dello stack è:
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
Qualcuno ha risolto questo problema in MySQL?
EDIT:
sono riuscito a fare questo lavoro con il seguente:
var id = connection.Query<ulong>("SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);").Single();
Forse non è l'ideale, ma funziona.
Aveva lo stesso problema. Per qualche motivo non trasmetterà a un int usando Dapper. Devi usare molto, piuttosto che eseguirne il downgrade a un interno in .net :(Non so se si tratta di un bug con Connector, MySQL o Dapper. – Sam
Ho appena ricevuto lo stesso problema e ho scoperto che è tornato molto a lungo:) –
È possibile eseguire il cast così a lungo anziché ulong e poi int. Un'altra stranezza che ho trovato è che le colonne bit (1) vengono passate come UInt64 (ulong). Il mio sospetto è l'autista. –