有一个包含三列的用户帐户表:ID(int, not null)、UserName(varchar(20)) 和 Email(varchar(50))。列 ID 是主键并具有 auto_increment 约束。有一个实体类 AccountInfo 映射到该表。当我调用 insert 方法时,它会抛出 “Specified cast is not valid”。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) 获取IdentitySql
public override string GetIdentitySql(string tableName)
{
return "SELECT LAST_INSERT_ID() AS Id";
}