こんにちは。CData Software Japan リードエンジニアの杉本です。
今回は分かる人にはわかる、嬉しい人にはとても嬉しい(私も嬉しい)CData Dataverse Driverの重要なアップデート「SchemaName」対応を紹介します!
www.cdata.com
SchemaName とは?
まず、Dataverse(Dynamics 365 CRM)にまつわるスキーマ名について解説しておきましょう。
Dataverseでは定義したテーブルの内部名をいくつかの種類で持っています。例えば取引先企業だと、以下のようになっていますね。(実はもうちょっとあるんですが違いもいまいちわからないので、省略)
プロパティ名 |
値の例 |
備考 |
LogicalName |
account |
|
SchemaName |
Account |
|
CollectionSchemaName |
accounts |
|
DisplayCollectionName |
Accounts |
|
DisplayName |
取引先企業(日本語の場合) |
|
このLogicalNameとDisplayNameが主にUI上で確認できる名前ですが
実は、Web API(OData)ではCollectionSchemaName、つまり複数形の値が使われていたりします。
以下のaccountsの部分がそうですね。
docs.microsoft.com
GET [Organization URI]/api/data/v9.1/accounts?$select=name
&$top=3 HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
このような仕様であるため、以前までのCData Dataverse DriverではCollectionSchemaNameがテーブル名として使われていました。
しかし、この新しい接続設定を使うことで、SchemaNameをテーブル名として利用できるようになりました!
使い方
使い方は簡単です。以下のSchemaという接続プロパティがデフォルトでは「System」になっているのですが、「Entities」に変更してください。
cdn.cdata.com
これでテーブル名がSchemaNameに変更されます。
もちろん、SQLも以下の通り。
// Schema=Entities;
SELECT * FROM Account;
// Schema=System;
SELECT * FROM accounts;
SchemaNameのポイント
さて、なぜここまでSchemaName対応が嬉しいのかといえば、SOAP APIの内部名で利用しているのがSchemaNameだからだったりします。
CDataで初期の頃から提供している Dynamics CRM Driverでは、内部的にSOAP APIを利用していたため
www.cdata.com
以下のようにTableの名称はSchema名で生成されていました。
cdn.cdata.com
このため、以前までは複数形のテーブル名であったため、もしバージョンアップした場合テーブル名を調整する必要があったのですが、今回のアップデートにより、よりスムーズにドライバーの変更も対応できるかと思います。
もし利用にあたって気になる点があれば、テクニカルサポートデスクまでお気軽にお問い合わせください。
https://www.cdata.com/jp/support/submit.aspx
関連コンテンツ