Dapper - 结果强类型
描述
可以使用扩展方法执行查询并使用动态类型映射结果。
强类型结果可以从以下扩展方法映射:
这些扩展方法可以从IDbConnection类型的任意对象中调用。
案例 - Query
Query
方法可以执行查询并将结果映射到强类型列表。
string sql = "SELECT * FROM Invoice;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoices = connection.Query<Invoice>(sql).ToList();
}
案例 - QueryFirst
QueryFirst
方法可以执行查询并将第一个结果映射到强类型列表。
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QueryFirst<Invoice>(sql, new {InvoiceID = 1});
}
案例 - QueryFirstOrDefault
QueryFirstOrDefault
方法可以执行查询并将第一个结果映射到强类型列表,如果序列不包含任何元素则为默认值。
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QueryFirstOrDefault<Invoice>(sql, new {InvoiceID = 1});
}
案例 - QuerySingle
QuerySingle
方法可以执行查询并将第一个结果映射到强类型列表,如果序列中没有元素则会引发异常。
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QuerySingle<Invoice>(sql, new {InvoiceID = 1});
}
案例 - QuerySingleOrDefault
QuerySingleOrDefault
方法可以执行查询并将第一个结果映射到强类型列表,如果序列为空则为默认值;如果序列中有多个元素,则此方法将引发异常。
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QuerySingleOrDefault<Invoice>(sql, new {InvoiceID = 1});
}