- 追加された行はこの色です。
- 削除された行はこの色です。
* Dapper [#u8e246a9]
** 匿名型に結果を詰める [#v607c46e]
var dsn = "Server=hv-cent01;Port=5432;User Id=taro;Password=mypass;Database=mydb";
var cn = new NpgsqlConnection(dsn);
cn.Open();
var all = cn.Query(@"SELECT * FROM t1");
** 指定した型に結果を詰める [#t9b6b4b3]
public class MyEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
var all = cn.Query<MyEntity>(@"SELECT * FROM t1");
** プリペアドステートメントで動的なパラメータを引数にする [#m105a42b]
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
** シングルカラム [#o95f63f8]
var count = (int) con.Query<Int64>(@"SELECT COUNT(*) AS count FROM t1").Single();
** 結果セットを返さないクエリの実行 [#v1b95d42]
var numOfRows = con.Execute("UPDATE t1 foo = @foo WEHRE @id > 10", new { id = 10, foo = 1 });
** トランザクション [#q54689d8]
try
{
using (var tran = con.BeginTransaction())
{
try
{
con.Execute("insert into t1 values (1, 'ABC');");
tran.Commit();
}
catch
{
tran.Rollback();
}
var dsn = "Server=server01;Port=5432;User Id=taro;Password=123;Database=mydb";
using (var cn = new NpgsqlConnection(dsn)) {
cn.Open();
var all = cn.Query(@"SELECT * FROM t2");
foreach (var row in all) {
Console.WriteLine("ID:{0}, TM:{1}", row.id, row.tm.ToString("yyyy-mm-ddTHH:mm:ss"));
}
}
finally
{
con.Execute("drop table t1");
}
Console.ReadLine();
** プリペアドステートメントでのLIKE演算子 [#nd198e29]
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 });
- 但し、検索対象の値(この場合val)に%等の文字列が含まれている場合はエスケープ処理をする方がより良い。
- http://stackoverflow.com/questions/10563077/dapper-like-query-for-mysql-safe-against-sql-injection?rq=1
** 参考 [#fe2d33af]
- オフィシャル http://code.google.com/p/dapper-dot-net/
-- テストコード https://github.com/SamSaffron/dapper-dot-net/blob/master/Tests/Tests.cs
- http://kiyokura.hateblo.jp/entry/20131014/p1
-- http://www.slideshare.net/kiyokura/adonetormmicro-orm-dapper-dot-net