我正在使用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'
)
答案 0 :(得分:1)
ExecuteScalar用于从数据库获取单个值。相反,您需要的是status
,它将返回一个结果集。现在,由于您希望查询返回单个记录,因此可以使用groupBy
。因此,请使用下面的代码。
connection.Query()
我还没有在实践中尝试过,但是我很确定上面的方法对您有用。