Soma 1.5.0.0 の新機能紹介
C#のコードで紹介します。
検索条件パラメータでIDictionary等の利用をサポート
これまでは、検索条件パラメータは匿名型のみをサポートしてました。
var empList = db.Query<Employee>( "select * from Employee e where e.DepartmentId = /* DepartmentId */0 and e.EmployeeName = /* EmployeeName */''", new { DepartmentId = 1, EmployeeName = "Smith" });
1.5.0.0ではIDictionary型などもサポートしました。例えばHashtableを使えます。
var empList = db.Query<Employee>( "select * from Employee e where e.DepartmentId = /* DepartmentId */0 and e.EmployeeName = /* EmployeeName */''", new Hashtable { { "DepartmentId", 1 }, { "EmployeeName", "Smith" } });
DbDataReaderのハンドリングのサポート
Somaは、DbDataReaderをPOCO、dynamic(dynamicはIDictionary
DataTable table = db.ExecuteReader( reader => { var t = new DataTable(); t.Load(reader); return t; }, "select * from Employee e where e.DepartmentId = /* DepartmentId */0 and e.EmployeeName = /* EmployeeName */''", new {DepartmentId = 1, EmployeeName = "Smith"});
第一引数のFunc
データバインディングのサポート
Queryメソッドなどの型パラメータにdynamicを指定した場合に、データバインディング可能なオブジェクトを返すようにしました。
たとえば、Window Formで次のようなコードを記述すると
var empList = db.Query<dynamic>("select * from Employee");
dataGridView1.DataSource = empList;
プロトタイピングなどで楽だと思います。
今回のリリースにあたっては、http://soma.codeplex.com/discussions/269435 にてnikochan2kさんからいろいろとフィードバックをいただいた結果を反映させています。フィードバックありがとうございました。