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);
-
}