.NET C# クエリビルダー SqlKata で CData ADO.NET Provider for kintone を使ってみる
ちょうど先日、Twitterでこんな疑問を見かけました!(ありがとうございます)
CData https://t.co/DsxgRKS4cB とDapperは一緒に使えるけど,SqlKataは無理かなあ。
— gucci (@gx_chan) 2020年2月5日
雰囲気行けそうな感じだったので試してみたら、すんなり接続できたので、Blogとしても書き起こしてみました。
SqlKataとは?
オープンソースで提供されている ADO.NET ベースのクエリビルダー兼ORMのライブラリです。
通常のSQL Server アクセス
まず、通常通りの使い方で、SQL Serverにアクセスしてみました。なお、.NET Frameworks でやっていますが、.NET Coreでもほとんど変わりません。
Consoleアプリケーションを作成し、Nugetでパッケージをインストール。
Install-Package SqlKata Install-Package SqlKata.Execution
以下のテーブルからデータを取得します。サンプルデータのAdventureworksに含まれているPersonテーブルを対象にしています。
今回は単純にPersonテーブルからの取得を作成してみました。メソッドチェーンで指定できるのがいい感じです。
内部にはDapperが使われているようで、データをGetする際に指定のクラスを渡してあげればIenumerable
Select・Where・OrderByといった要素も以下のようにメソッドチェーンで記述できて、大変楽です。
// Where persons = db.Query("Person.Person").Where("BusinessEntityID", "1").Limit(10).Get<Person>(); // SELECT persons = db.Query("Person.Person").Select("BusinessEntityID").Limit(10).Get<Person>(); // OrderBy persons = db.Query("Person.Person").OrderByDesc("BusinessEntityID").Limit(10).Get<Person>();
CData ADO.NET Provider for Kintone を利用する方法
次に「CData ADO.NET Provider for Kintone 」でも試してみたいと思います。事前に以下のページからトライアルをインストールしておきます。
https://www.cdata.com/jp/drivers/kintone/ado/
インストール後、対象のプロジェクトに以下のDLLを参照しておきます。
C:\Program Files\CData\CData ADO.NET Provider for kintone 2019J\lib\System.Data.CData.Kintone.dll
対象となる kintone のアプリは以下のようなテンプレートで作成できる案件情報です。
一点、kintone を扱う上で注意したいのは、取得できる項目名が「日本語」であるという点ですが、なんと素晴らしいことに、ちゃんと日本語名で定義したClassにデータをマッピングすることができるようになっています。
Insertもこの通り。素晴らしいですね。
var query = new Query("案件情報").AsInsert( new { 案件名 = "ugauga" } ); db.Execute(query);
余談
CData ADO.NET Provider では LINQもサポートしています。このあたりは好みに合わせてライブラリを選ぶことができますし、
ADO.NET ベースで実装されているラッパーライブラリであれば、だいたいいけると思います。
過去にはDapperでの接続も検証していました。