使用Dapper查询MySql数据库时出现InvalidCastException

时间:2019-03-23 17:41:01

标签: c# mysql dapper

我正在使用Dapper从Linux服务器查询MySQL数据库。

对于我的第一个查询,非常简单,我使用以下代码:

public async Task<Customer> GetCustomerByCode(string customerCode)
{
    using (var connection = GetOpenConnection())
    {
        Customer result = await connection.ExecuteScalarAsync<Customer>("select * from `Customer` where `Code` = @customerCode", new { customerCode }, null, null, System.Data.CommandType.Text);
        return result;
    }
}

protected IDbConnection GetOpenConnection()
{
    var connection = new MySqlConnection(connectionString);
    connection.Open();

    return connection;
}

Trying to execute this query with an user code (existing) `PGM` I get this error:
System.InvalidCastException: Invalid cast from 'System.Int32' to 'EmemoriesSuite.Data.Entities.Customer'.

我不太了解自己在做什么。.这应该是我的结果查询,并且在PhpMyAdmin中使用它就像魅惑(select * from Customer where Code = 'PGM'

1 个答案:

答案 0 :(得分:1)

ExecuteScalar用于从数据库获取单个值。相反,您需要的是status,它将返回一个结果集。现在,由于您希望查询返回单个记录,因此可以使用groupBy。因此,请使用下面的代码。

connection.Query()

我还没有在实践中尝试过,但是我很确定上面的方法对您有用。