ID(int, not null)、UserName(varchar(20))、および Email(varchar(50)) の 3 つの列を持つユーザー アカウント テーブルがあります。列 ID は主キーであり、auto_increment 制約があります。テーブルにマップされたエンティティ クラス AccountInfo があります。挿入メソッドを呼び出すと、 「指定されたキャストは無効です」がスロー されます。QueryInternal メソッドで 879 行。しかし、エンティティ AccountInfo からプロパティ ID を削除すると、正常に機能します。誰でも提案できますか?ありがとう。
いくつかのコードはここにあります:
1) 挿入方法
public dynamic Insert<T>(IDbConnection conn, T entity, IDbTransaction transaction = null) where T : class
{
dynamic result = conn.Insert<T>(entity, transaction);
return result;
}
public dynamic Insert<T>(IDbConnection connection, T entity, IDbTransaction transaction, int? commandTimeout) where T : class
{
//...
if (SqlGenerator.SupportsMultipleStatements())
{
sql += SqlGenerator.Configuration.Dialect.BatchSeperator + SqlGenerator.IdentitySql(classMap);
result = connection.Query<long>(sql, entity, transaction, false, commandTimeout, CommandType.Text);
}
//...
}
2) 内部クエリ
while (reader.Read())
{
yield return (T)func(reader);
}
3) GetIdentitySql
public override string GetIdentitySql(string tableName)
{
return "SELECT LAST_INSERT_ID() AS Id";
}