Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

.NET C# クエリビルダー SqlKata で CData ADO.NET Provider for kintone を使ってみる

ちょうど先日、Twitterでこんな疑問を見かけました!(ありがとうございます)

雰囲気行けそうな感じだったので試してみたら、すんなり接続できたので、Blogとしても書き起こしてみました。

SqlKataとは?

オープンソースで提供されている ADO.NET ベースのクエリビルダー兼ORMのライブラリです。

sqlkata.com

通常のSQL Server アクセス

まず、通常通りの使い方で、SQL Serverにアクセスしてみました。なお、.NET Frameworks でやっていますが、.NET Coreでもほとんど変わりません。

Consoleアプリケーションを作成し、Nugetでパッケージをインストール。

Install-Package SqlKata Install-Package SqlKata.Execution

以下のテーブルからデータを取得します。サンプルデータのAdventureworksに含まれているPersonテーブルを対象にしています。

f:id:sugimomoto:20200207105710p:plain

今回は単純にPersonテーブルからの取得を作成してみました。メソッドチェーンで指定できるのがいい感じです。

内部にはDapperが使われているようで、データをGetする際に指定のクラスを渡してあげればIenumerableでレスポンスを受け取れます。いいですねー。

gist.github.com

f:id:sugimomoto:20200207105755p:plain

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/

f:id:sugimomoto:20200207105817p:plain

インストール後、対象のプロジェクトに以下のDLLを参照しておきます。

C:\Program Files\CData\CData ADO.NET Provider for kintone 2019J\lib\System.Data.CData.Kintone.dll

対象となる kintone のアプリは以下のようなテンプレートで作成できる案件情報です。

f:id:sugimomoto:20200207105829p:plain

一点、kintone を扱う上で注意したいのは、取得できる項目名が「日本語」であるという点ですが、なんと素晴らしいことに、ちゃんと日本語名で定義したClassにデータをマッピングすることができるようになっています。

gist.github.com

f:id:sugimomoto:20200207105836p:plain

Insertもこの通り。素晴らしいですね。

            var query = new Query("案件情報").AsInsert(
                new
                {
                    案件名 = "ugauga"
                }
                );

            db.Execute(query);

余談

CData ADO.NET Provider では LINQもサポートしています。このあたりは好みに合わせてライブラリを選ぶことができますし、

cdn.cdata.com

ADO.NET ベースで実装されているラッパーライブラリであれば、だいたいいけると思います。

過去にはDapperでの接続も検証していました。

kageura.hatenadiary.jp

Reference

tekitoumemo.hatenablog.com