Dapperの公式翻訳チュートリアル3:のクエリDapperの方法
説明クエリ方法
Queryメソッドは、あなたがクエリを実行できるのIDbConnectionオブジェクトと呼ばれ、その結果にマッピングすることができ、拡張メソッドです。
あなたはタイプをマップすることができます。
この方法は、クエリで使用することができます
パラメーター名 | パラメータ説明 |
SQL | データベースの声明 |
PARAM | クエリパラメータ |
トランザクション | 使用されるサービス |
緩衝 | キャッシュするかどうか |
COMMANDTIMEOUT | 実行タイムアウト |
CommandTypeを | ステートメントの種類 |
例:クエリの実行匿名型
-
文字列のSQLが= "10 * FROMたOrderDetails TOP SELECT"。
-
-
使用して(VAR接続= 新しいは、SqlCeConnection("データソース= SqlCe_W3Schools.sdf"))
-
{
-
//型推論VARのために使用さ
-
VAR orderDetail = connection.Query(SQL).FirstOrDefault();
-
-
FiddleHelper.WriteTable(orderDetail)。
-
}
例:強く型付けされたクエリを実行するクエリ
-
文字列のSQLが= "10 * FROMたOrderDetails TOP SELECT"。
-
-
使用して(VAR接続= 新しいは、SqlCeConnection("データソース= SqlCe_W3Schools.sdf"))
-
{
-
VARたOrderDetails = connection.Query <OrderDetail>(SQL).ToList();
-
-
Console.WriteLineを(orderDetails.Count)。
-
-
FiddleHelper.WriteTable(たOrderDetails)。
-
}
例:1対1の関係クエリの実行
-
文字列のSQLは= "INNER A.InvoiceID = B.InvoiceID ON B AS InvoiceDetailを結合として請求書* FROMを選択します。";
-
-
使用(VAR接続= My.ConnectionFactory())
-
{
-
connection.Open();
-
-
VaRの請求書= connection.Query <請求書、InvoiceDetail、請求書>(
-
SQL、
-
(請求書、invoiceDetail)=>
-
{
-
invoice.InvoiceDetail = invoiceDetail。
-
請求書を返します。
-
}、
-
splitOn: "InvoiceID")
-
.Distinct()
-
.ToList()。
-
}
例:クエリ実行対多の関係
-
文字列のSQL = "インナーA.OrderID = B.OrderID ON B ASたOrderDetailsを結合として受注FROM TOP 10 *を選択します。";
-
-
使用して(VAR接続= 新しいは、SqlCeConnection("データソース= SqlCe_W3Schools.sdf"))
-
{
-
VAR orderDictionary = 新しい辞書< int型、順序>();
-
-
-
VARリスト= connection.Query <受注、OrderDetail、注文>(
-
SQL、
-
(順序、orderDetail)=>
-
{
-
ご注文のOrderEntry;
-
-
(もし!orderDictionary.TryGetValue(order.OrderID、のOrderEntryアウト))
-
{
-
OrderEntry =オーダー。
-
orderEntry.OrderDetails = 新しいリスト<OrderDetail>();
-
orderDictionary.Add(orderEntry.OrderID、のOrderEntry)。
-
}
-
-
orderEntry.OrderDetails.Add(orderDetail)。
-
OrderEntryを返します。
-
}、
-
splitOn: "受注")
-
.Distinct()
-
.ToList()。
-
-
Console.WriteLineを(list.Count)。
-
-
FiddleHelper.WriteTable(リスト);
-
FiddleHelper.WriteTable(list.First()たOrderDetails。)。
-
}
例:クエリの複数のタイプを実行します
-
文字列のSQLが= "請求書SELECT * FROM;";
-
-
使用(VAR接続= My.ConnectionFactory())
-
{
-
connection.Open();
-
-
VaRの請求書= 新しいリスト<請求書>();
-
-
使用(VARリーダ= connection.ExecuteReader(SQL))
-
{
-
VAR storeInvoiceParser = reader.GetRowParser <StoreInvoice>();
-
VAR webInvoiceParser = reader.GetRowParser <WebInvoice>();
-
-
しばらく(reader.Read())
-
{
-
請求書、請求書、
-
-
スイッチ((InvoiceKind)reader.GetInt32(reader.GetOrdinal("種類")))
-
{
-
ケースInvoiceKind.StoreInvoice:
-
インボイス= storeInvoiceParser(リーダー)。
-
ブレーク;
-
ケースInvoiceKind.WebInvoice:
-
インボイス= webInvoiceParser(リーダー)。
-
ブレーク;
-
デフォルト:
-
スロー新しい例外(ExceptionMessage.GeneralExceptionを)。
-
}
-
-
invoices.Add(請求書)。
-
}
-
}
-
-
My.Result.Show(請求書)。
-
}