SDK 4.0.12 の xRM を使ってみよう パート 2

みなさん、こんにちは。

今日は先週に引き続き、xRM の機能を紹介していきたいと思います。

今回は関連付けのあるレコードに関する更新を紹介します。

N:1 関連付けの更新

まず取引先担当者と取引先企業のように、N:1 の関連があるレコードに関して試してみましょう。
この場合は、SetLink() メソッドが利用可能です。早速コードを見ていきましょう。

前提:システムに取引先担当者と取引先企業を事前に作成しておきます。

取引先担当者の GUID が CBF492A2-5974-DF11-81C5-00155D6C5402
取引先企業の GUID が AB7A9D99-5974-DF11-81C5-00155D6C5402
関連の名前が contact_customer_accounts

// サービスの作成
var crm = new Xrm.ADVDataContext("OnPremise");
// 取引先担当者の取得
            var myConatct =
                from contact in crm.contacts
                where contact.contactid == new Guid("{CBF492A2-5974-DF11-81C5-00155D6C5402}")
                select contact;

// 取引先企業の取得
            var myAccount =
                from account in crm.accounts
                where account.accountid == new Guid("{AB7A9D99-5974-DF11-81C5-00155D6C5402}")
                select account;

// 関連の更新            
            crm.SetLink(myConatct.First(), "contact_customer_accounts", myAccount.First());
            crm.SaveChanges();

このコードを実行した結果、レコードに関連が設定されました。

image

では、せっかくなので関連を削除してみましょう。以下のコードを実行してください。

var crm = new Xrm.ADVDataContext("OnPremise");
            var myConatct =
                from contact in crm.contacts
                where contact.contactid == new Guid("{CBF492A2-5974-DF11-81C5-00155D6C5402}")
                select contact;

// 関連の削除 ※ null で更新            
            crm.SetLink(myConatct.First(), "contact_customer_accounts", null);
            crm.SaveChanges();

image

結果リンクは削除されました。

N:N および 1:N 関連付けの更新

では次に、N:N および 1:N の場合ですが、この場合は AddLink() を使用します。早速以下のコードを実行して
見ましょう。

var crm = new Xrm.ADVDataContext("OnPremise");
            var myConatct =
                from contact in crm.contacts
                where contact.contactid == new Guid("{CBF492A2-5974-DF11-81C5-00155D6C5402}")
                select contact;

            var myAccount =
                from account in crm.accounts
                where account.accountid == new Guid("{AB7A9D99-5974-DF11-81C5-00155D6C5402}")
                select account;

// 関連の更新
            crm.AddLink(myAccount.First(), "account_contacts", myConatct.First());
            crm.SaveChanges();

同じく関連が更新されますので、是非試してみてくださいね。

今回は関連がある場合の更新手法を紹介しました。また面白そうなトピックがあれば紹介させていただきます。

- Dynamics CRM サポート 中村 憲一郎