如何使用dapper获取第一个子值(通常查询count(*)作为唯一的结果)

时间:2016-03-21 06:02:33

标签: c# sql orm dapper

我想实现这样的功能:

public static string GetResult(string sql) {
    // TODO: 
    // result = connection.Query(....);
    // return result.FirstRow().FirstChild().ToString();
}

并且这样打电话:

string myName = GetResult("SELECT userName from tb_Users WHERE ID = 1");
// or
int totalRows = Convert.ToInt32(GetResult("SELECT count(*) FROM tb_List"));

如何使用Dapper实现TODO部分?

1 个答案:

答案 0 :(得分:3)

Dapper有ExecuteScalar[<T>],如果您正在阅读一列,一行,一个网格,则可以使用它。所以:

var name = connection.ExecuteScalar<string>("select 'abc'");
int count = connection.ExecuteScalar<int>("select 123");

对于所有常见的“一行,多列”场景,还有Query{First|Single}[OrDefault][<T>]

对您的API提出警告:接受一串sql(并且没有单独的参数)的任何内容都让我非常紧张您将导致SQL注入问题。