QuerySingleOrDefault是一個可以從IDbConnection類型的任意對象調(diào)用的擴展方法,它可以執(zhí)行查詢并映射第一個結(jié)果,如果序列為空則為默認值。如果序列中有多個元素,則此方法將引發(fā)異常。
結(jié)果可以映射到:
下表顯示了QuerySingleOrDefault方法的不同參數(shù)。
名稱 | 描述 |
---|---|
sql | 要執(zhí)行的查詢。 |
param | 查詢參數(shù)(默認為null )。 |
transaction | 需要使用的事務(wù)(默認為null )。 |
commandTimeout | 命令執(zhí)行超時時間(默認為null )。 |
commandType | 命令類型(默認為null )。 |
注意使用正確的方法。First和Single的方法是非常不同的。
結(jié)果 | 沒有項 | 有一項 | 有多項 |
---|---|---|---|
First | 拋異常 | 當前項 | 第一項 |
Single | 拋異常 | 當前項 | 拋異常 |
FirstOrDefault | 默認值 | 當前項 | 第一項 |
SingleOrDefault | 默認值 | 當前項 | 拋異常 |
執(zhí)行查詢并將第一個結(jié)果映射到動態(tài)類型列表,如果序列為空則為默認值。如果序列中有多個元素,則此方法將引發(fā)異常。
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QuerySingleOrDefault(sql, new {InvoiceID = 1});
}
執(zhí)行查詢并將第一個結(jié)果映射到強類型列表,如果序列為空則為默認值。如果序列中有多個元素,則此方法將引發(fā)異常。
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QuerySingleOrDefault<Invoice>(sql, new {InvoiceID = 1});
}
更多建議: