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();
このコードを実行した結果、レコードに関連が設定されました。
では、せっかくなので関連を削除してみましょう。以下のコードを実行してください。
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();
結果リンクは削除されました。
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 サポート 中村 憲一郎