はじめに
PowerAppsのモデル駆動の設定が面倒なのでC#からDataverseを操作してみたくなった。
まずはDataverseにあるテーブルの一覧を表示するコードを作成してみた。
前提
・C#の.Net frameworkのコンソールプログラムを作成
・Microsoft.CrmSdk.XrmTooling.CoreAssembly をnugetで追加
コード
dataverseへの接続文字列を構築してCrmServiceClientのインスタンスを作成(CreateCrmService)。
あとは全てのテーブル情報を取得するRetrieveAllEntitiesRequestを作成して実行。
static void Main(string[] args)
{
if (args.Length < 3)
{
Console.WriteLine("引数:ユーザ名 パスワード URL");
return;
}
string user = args[0];
string password = args[1];
string url = args[2];
var organizationService = CreateCrmService(user, password, url);
var request = new RetrieveAllEntitiesRequest { EntityFilters = EntityFilters.All };
var response = (RetrieveAllEntitiesResponse)organizationService.Execute(request);
foreach (var table in response.EntityMetadata)
{
Console.WriteLine(table.EntitySetName);
}
}
private static OrganizationWebProxyClient CreateCrmService(string user, string password, string url)
{
string authType = "OAuth";
string appId = "51f81489-12ee-4a9e-aaae-a2591f45987d";
string reDirectURI = "app://58145B91-0C36-4500-8554-080854F2AC97";
string loginPrompt = "Auto";
string ConnectionString = string.Format("AuthType = {0};Username = {1};Password = {2}; Url = {3}; AppId={4}; RedirectUri={5};LoginPrompt={6}",
authType, user, password, url, appId, reDirectURI, loginPrompt);
var serviceClient = new CrmServiceClient(ConnectionString);
var organizationService = serviceClient.OrganizationWebProxyClient;
return organizationService;
}
*プログラムに渡す引数はユーザ名、パスワードはdataverseにアクセス可能なM365ユーザ、URLはモデル駆動のアドレスの先頭部分「https://xxxxxxx.crmx.dynamics.com」を指定
おわりに
テーブルの一覧はわりと簡単に表示できました。今度はテーブルや列の作成、フォームやビュー、ワークフローの中身を探索していこうと思います。
参照情報