そのため、Dynamics CRM の接続は、物事を相互にリンクする汎用的な方法を提供します。
内部的に、Connections エンティティには Record1Id 属性と Record2Id 属性があります。
UI を介して接続を作成すると、CRM は実際に "データベースの接続テーブルに 2 つのエントリを作成します。各エントリを使用して、元のレコードまたは関連レコードから関連レコードを検索できます。 "
つまり、A と B を接続すると、2 つの行が (舞台裏の) テーブルに保存されます。
- Record1Id = A および Record2Id = B の 1 つ
- および Record1Id = B および Record2Id = A の 1 つ
これは、接続の検索を容易にするためです。接続に対して高度な検索を行う場合は、「一方向」の検索のみを行う必要があります。
だから私の質問は:
API (レイト バウンド) を介して接続を作成すると、次のようになります。
Entity connection = new Entity("connection");
connection["record1id"] = new EntityReference("contact", someContactId);
connection["record1objecttypecode"] = new OptionSetValue(2);
connection["record1roleid"] = new EntityReference("connectionrole", someConnectionRoleId);
connection["record2id"] = new EntityReference("incident", someCaseId);
connection["record2objecttypecode"] = new OptionSetValue(122);
connection["record2roleid"] = new EntityReference("connectionrole", someOtherConnectionRoleId);
var newId = service.Create(connection);
... 上記のように「一方向」で接続を作成するだけで十分ですか?その後、舞台裏で CRM が双方向の接続を作成しますか?
...または、双方向で手動で作成する必要がありますか? (2 回保存して、record1id と record2id の値を交換するなど)
または、言い換えれば、CRM API for Connections は「実際には 2 つのバックグラウンド接続」機能をカプセル化しますか?それとも手動で処理する必要がありますか?