Dapper 応用

匿名型に結果を詰める

 var dsn = "Server=server01;Port=5432;User Id=taro;Password=mypass;Database=mydb";
 var cn = new NpgsqlConnection(dsn);
 cn.Open();
 var all = cn.Query(@"SELECT * FROM t1");

指定した型に結果を詰める

 
 public class MyEntity
 {
     public int Id { get; set; }
     public string Name { get; set; }
 }
 var all = cn.Query<MyEntity>(@"SELECT * FROM t1");

プリペアドステートメントで動的なパラメータを引数にする

 DynamicParameters p = new DynamicParameters();
 //DynamicParameters p = new DynamicParameters(dict);
 p.Add("age", 10);
 var sql = @"SELECT * FROM user WHERE " + String.Join(" AND ", where);
 var rows = con.Query(sql, p);

http://stackoverflow.com/questions/9481678/how-to-create-arguments-for-a-dapper-query-dynamically

シングルカラム

 var count = (int) con.Query<Int64>(@"SELECT COUNT(*) AS count FROM t1").Single();

結果セットを返さないクエリの実行

 var numOfRows = con.Execute("UPDATE t1 foo = @foo WEHRE @id > 10", new { id = 10, foo = 1 });

トランザクション

 try
 {
     using (var tran = con.BeginTransaction())
     {
         try 
         { 
             con.Execute("insert into t1 values (1, 'ABC');");
             tran.Commit();
         }
         catch
         {
             tran.Rollback();
         }
     }
 }
 finally
 {
     con.Execute("drop table t1");
 }

プリペアドステートメントでのLIKE演算子

 users = cn.Query(@"SELECT * FROM user WHERE name LIKE @name LIMIT 10", new { name = '%' + val + '%'});

または

 users = cn.Query(@"SELECT * FROM user WHERE name LIKE '%' || @name || '%' LIMIT 10", new { name = val });

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS