Dapperの公式翻訳チュートリアル3:(ターン)のDapperの方法を照会

Dapperの公式翻訳チュートリアル3:のクエリDapperの方法

説明クエリ方法

 

Queryメソッドは、あなたがクエリを実行できるのIDbConnectionオブジェクトと呼ばれ、その結果にマッピングすることができ、拡張メソッドです。

あなたはタイプをマップすることができます。

 

この方法は、クエリで使用することができます

 

クエリメソッドのパラメータ説明
パラメーター名 パラメータ説明
SQL データベースの声明
PARAM クエリパラメータ
トランザクション 使用されるサービス
緩衝 キャッシュするかどうか
COMMANDTIMEOUT 実行タイムアウト
CommandTypeを ステートメントの種類

 

例:クエリの実行匿名型

  1.  
    文字列のSQLが= "10 * FROMたOrderDetails TOP SELECT"。
  2.  
     
  3.  
    使用して(VAR接続= 新しいは、SqlCeConnection("データソース= SqlCe_W3Schools.sdf"))
  4.  
    {
  5.  
    //型推論VARのために使用さ
  6.  
    VAR orderDetail = connection.Query(SQL).FirstOrDefault();
  7.  
     
  8.  
    FiddleHelper.WriteTable(orderDetail)。
  9.  
    }

例:強く型付けされたクエリを実行するクエリ

  1.  
    文字列のSQLが= "10 * FROMたOrderDetails TOP SELECT"。
  2.  
     
  3.  
    使用して(VAR接続= 新しいは、SqlCeConnection("データソース= SqlCe_W3Schools.sdf"))
  4.  
    {
  5.  
    VARたOrderDetails = connection.Query <OrderDetail>(SQL).ToList();
  6.  
     
  7.  
    Console.WriteLineを(orderDetails.Count)。
  8.  
     
  9.  
    FiddleHelper.WriteTable(たOrderDetails)。
  10.  
    }

例:1対1の関係クエリの実行

  1.  
    文字列のSQLは= "INNER A.InvoiceID = B.InvoiceID ON B AS InvoiceDetailを結合として請求書* FROMを選択します。";
  2.  
     
  3.  
    使用(VAR接続= My.ConnectionFactory())
  4.  
    {
  5.  
    connection.Open();
  6.  
     
  7.  
    VaRの請求書= connection.Query <請求書、InvoiceDetail、請求書>(
  8.  
    SQL、
  9.  
    (請求書、invoiceDetail)=>
  10.  
    {
  11.  
    invoice.InvoiceDetail = invoiceDetail。
  12.  
    請求書を返します。
  13.  
    }、
  14.  
    splitOn: "InvoiceID")
  15.  
    .Distinct()
  16.  
    .ToList()。
  17.  
    }

例:クエリ実行対多の関係

  1.  
    文字列のSQL = "インナーA.OrderID = B.OrderID ON B ASたOrderDetailsを結合として受注FROM TOP 10 *を選択します。";
  2.  
     
  3.  
    使用して(VAR接続= 新しいは、SqlCeConnection("データソース= SqlCe_W3Schools.sdf"))
  4.  
    {
  5.  
    VAR orderDictionary = 新しい辞書< int型、順序>();
  6.  
     
  7.  
     
  8.  
    VARリスト= connection.Query <受注、OrderDetail、注文>(
  9.  
    SQL、
  10.  
    (順序、orderDetail)=>
  11.  
    {
  12.  
    ご注文のOrderEntry;
  13.  
     
  14.  
    (もし!orderDictionary.TryGetValue(order.OrderID、のOrderEntryアウト))
  15.  
    {
  16.  
    OrderEntry =オーダー。
  17.  
    orderEntry.OrderDetails = 新しいリスト<OrderDetail>();
  18.  
    orderDictionary.Add(orderEntry.OrderID、のOrderEntry)。
  19.  
    }
  20.  
     
  21.  
    orderEntry.OrderDetails.Add(orderDetail)。
  22.  
    OrderEntryを返します。
  23.  
    }、
  24.  
    splitOn: "受注")
  25.  
    .Distinct()
  26.  
    .ToList()。
  27.  
     
  28.  
    Console.WriteLineを(list.Count)。
  29.  
     
  30.  
    FiddleHelper.WriteTable(リスト);
  31.  
    FiddleHelper.WriteTable(list.First()たOrderDetails。)。
  32.  
    }

例:クエリの複数のタイプを実行します

  1.  
    文字列のSQLが= "請求書SELECT * FROM;";
  2.  
     
  3.  
    使用(VAR接続= My.ConnectionFactory())
  4.  
    {
  5.  
    connection.Open();
  6.  
     
  7.  
    VaRの請求書= 新しいリスト<請求書>();
  8.  
     
  9.  
    使用(VARリーダ= connection.ExecuteReader(SQL))
  10.  
    {
  11.  
    VAR storeInvoiceParser = reader.GetRowParser <StoreInvoice>();
  12.  
    VAR webInvoiceParser = reader.GetRowParser <WebInvoice>();
  13.  
     
  14.  
    しばらく(reader.Read())
  15.  
    {
  16.  
    請求書、請求書、
  17.  
     
  18.  
    スイッチ((InvoiceKind)reader.GetInt32(reader.GetOrdinal("種類")))
  19.  
    {
  20.  
    ケースInvoiceKind.StoreInvoice:
  21.  
    インボイス= storeInvoiceParser(リーダー)。
  22.  
    ブレーク;
  23.  
    ケースInvoiceKind.WebInvoice:
  24.  
    インボイス= webInvoiceParser(リーダー)。
  25.  
    ブレーク;
  26.  
    デフォルト:
  27.  
    スロー新しい例外(ExceptionMessage.GeneralExceptionを)。
  28.  
    }
  29.  
     
  30.  
    invoices.Add(請求書)。
  31.  
    }
  32.  
    }
  33.  
     
  34.  
    My.Result.Show(請求書)。
  35.  
    }

 

おすすめ

転載: www.cnblogs.com/LiZhongZhongY/p/10991643.html