を使用して)(MySQLのLAST_INSERT_IDを返すとき、この問題は、ここでMSSQLのためにカバーされています無効なキャストdapper.net
How do I perform an insert and return inserted identity with Dapper?
しかし、この解決策は、MySQLで動作しません。あなたがこれをしなければならないのmysqlを整数にLAST_INSERT_ID()
をキャストする
:
SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);
スタックトレースは次のとおりです。
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
は、誰もがMySQLでは、この問題を解決しましたか?
EDIT:
var id = connection.Query<ulong>("SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);").Single();
おそらく
ない理想的な、それは動作します:
私は次のように、この作品を作ることができました。
同じ問題がありました。何らかの理由でDapperを使ってintにキャストしません。あなたは、それをintにダウングレードするよりも長い時間を使う必要があります:(それはConnector、MySQL、またはDapperのバグかどうかわかりません) – Sam
ちょうど同じ問題があり、 ) –
ulongとintの代わりにlongキャストすることができます。私が見つけたもう一つの奇妙な点は、ビット(1)の列がUInt64(ulong)として渡されていることです。私の疑惑は運転手です。 –