Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 12

みなさん、こんにちは。

前回に引き続き Dynamics CRM Online 2015 Update 1 で提供される
Web API 開発者プレビューを T4 テンプレートで作成したクライアント
で利用する方法について紹介します。連載記事になるため以下の記事を
事前にご覧ください。

Web API 開発者プレビュー その 1
Web API 開発者プレビュー その 2
Web API 開発者プレビュー その 10
Web API 開発者プレビュー その 11

今回は T4 テンプレートで作成したクライアントを利用したレコードの
作成、更新、削除を紹介します。

レコードの作成

1. 前回作成した Visual Studio ソリューションを開き、Program.cs
ファイルを開きます。新しく以下のメソッドを追加します。

public void CRUDRun(string accessToken)
{
    // クライアントの作成
    CrmODataClient client = new CrmODataClient(new Uri(serverUrl + "/api/data/"));
    client.SendingRequest2 += (s, e) => { e.RequestMessage.SetHeader("Authorization", "Bearer " + accessToken); };
}

2. 以下の using ステートメントを追加します。

using Microsoft.OData.Client;

3. Main メソッドの以下のコードを書き換えて、新しいメソッドを
呼ぶように変更します。

元)  
app.Run(result.AccessToken);

変更後)
app.CRUDRun(result.AccessToken);

4. 新しく追加した CRUDRunメソッド内に以下のコードを追加します。

// 取引先企業のコレクションを作成
DataServiceCollection<Account> accounts = new DataServiceCollection<Account>(client);
// 取引先企業レコードをインスタンス化
Account account = new Account();
// コレクションに追加
accounts.Add(account);
// 値を指定
account.Accountid =  Guid.NewGuid();
account.Name = "サンプル取引先企業";
account.Accountnumber = "SampleAccountNumber";

5. 最後に変更を保存してレコードを作成します。この際、指定した
値以外は送信しないよう、SaveChangesOption を指定します。

client.SaveChanges(SaveChangesOptions.PostOnlySetProperties);
Console.WriteLine("レコードを作成しました。");

動作確認

1. F5 キーを押下してプログラムを実行します。

2. 認証ダイアログが表示されたらログインします。

image

3. 処理が完了したらブラウザでレコードが作成されたか確認します。

image

image

4. 作成したレコードは一旦削除しておきます。

レコードの更新

次に追加したレコードを更新します。

1. CRUDRun メソッドの最後に以下のコードを追加します。

// 取引先企業の更新
account.Name = account.Name + " 更新";

2. 変更を保存してレコードを作成します。この際、指定した
値以外は送信しないよう、SaveChangesOption を指定します。

client.SaveChanges(SaveChangesOptions.PostOnlySetProperties);
Console.WriteLine("レコードを更新しました。");

動作確認

1. F5 キーを押下してプログラムを実行します。

2. 認証ダイアログが表示されたらログインします。

3. 結果を確認します。

image

image

4. 作成したレコードは一旦削除しておきます。

レコードの削除

最後にレコードを削除します。CRUDRun メソッドの最後に以下の
コードを追加します。

// レコードをクライアントから削除
client.DeleteObject(account);
// 変更の保存
client.SaveChanges();
Console.WriteLine("レコードを削除しました。");

動作確認

1. F5 キーを押下してプログラムを実行します。

2. 認証ダイアログが表示されたらログインします。

3. 結果を確認します。

image

以下に今回追加したメソッドを示します。

using Microsoft.OData.Client;

public void CRUDRun(string accessToken)
{
    // クライアントの作成
    CrmODataClient client = new CrmODataClient(new Uri(serverUrl + "/api/data/"));
    client.SendingRequest2 += (s, e) => { e.RequestMessage.SetHeader("Authorization", "Bearer " + accessToken); };

    // 取引先企業のコレクションを作成
    DataServiceCollection<Account> accounts = new DataServiceCollection<Account>(client);
    // 取引先企業レコードをインスタンス化
    Account account = new Account();
    // コレクションに追加
    accounts.Add(account);
    // 値を指定
    account.Accountid = Guid.NewGuid();
    account.Name = "サンプル取引先企業";
    account.Accountnumber = "SampleAccountNumber";

    client.SaveChanges(SaveChangesOptions.PostOnlySetProperties);
    Console.WriteLine("レコードを作成しました。");
           
    // 取引先企業の更新
    account.Name = account.Name + " 更新";
    client.SaveChanges(SaveChangesOptions.PostOnlySetProperties);
    Console.WriteLine("レコードを更新しました。");

    // レコードをクライアントから削除
    client.DeleteObject(account);
    // 変更の保存
    client.SaveChanges();
    Console.WriteLine("レコードを削除しました。");
}

まとめ

レコードの作成、更新、削除は Dynamics CRM に依存した形ではなく
通常の OData Client をまったく同じ方法で使用できます。次回は
Action の実行を紹介します。お楽しみに!

- 中村 憲一郎