Dapper官方教程翻译4:Dapper方法之QueryFirst(转)
Dapper官方教程翻译4:Dapper方法之QueryFirst
QueryFirst方法描述
QueryFirst方法也是一个扩展方法,可以被IDbConnection对象调用,可以执行查询语句,并且映射到结果。
可以映射的类型:
QueryFirst方法可使用的参数
| 参数名 | 参数说明 |
| sql | 数据库语句 |
| param | 查询参数 |
| transaction | 所使用的事务 |
| commandTimeout | 执行超时时间 |
| commandType | 语句类型 |
First,FirstOrDefault,Single,SingleOrDefault对比
| Result | No Item | One Item | Many Items |
|---|---|---|---|
| First | Exception | Item | First Item |
| Single | Exception | Item | Exception |
| FirstOrDefault | Default | Item | First Item |
| SingleOrDefault | Default | Item | Exception |
xx与xxOrDefault的区别:xx在找不到数据的时候会引发异常,而xxOrDefault会返回默认值,所以不确定有没有值的时候,优先使用xxOrDefault。
在含有多个值的时候,Single与SingleOrDefault都会引发异常,而First或者FirstOrDefault会返回第一个满足条件的值。
综上,优先使用FirstOrDefault
匿名查询
-
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
-
-
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
-
{
-
var orderDetail = connection.QueryFirst(sql, new {OrderDetailID = 1});
-
-
FiddleHelper.WriteTable(orderDetail);
-
}
强类型查询
-
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
-
-
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
-
{
-
var orderDetail = connection.QueryFirst(sql, new {OrderDetailID = 1});
-
-
FiddleHelper.WriteTable(orderDetail);
-
}

浙公网安备 33010602011771号