- 追加された行はこの色です。
- 削除された行はこの色です。
* Dapper [#u8e246a9]
** dynamic型に結果を詰める [#v607c46e]
** 匿名型に結果を詰める [#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]
var all = cn.Query<MyEntity>(@"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");
IEnumerable<UserEntity> users;
using (var cn = new NpgsqlConnection(dsn))
** プリペアドステートメントで動的なパラメータを引数にする [#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
** トランザクション [#q54689d8]
try
{
cn.Open();
users = cn.Query<UserEntity>(@"SELECT * FROM user WHERE name LIKE @name LIMIT 10",
new { name = '%' + name + '%'});
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");
}
** オフィシャル [#e215a594]
- http://code.google.com/p/dapper-dot-net/
*** テストコード [#cfea6b38]
- https://github.com/SamSaffron/dapper-dot-net/blob/master/Tests/Tests.cs
** プリペアドステートメントでの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