1

Dynamics で定義された 1 対多の関係 (参照、非親) を持つカスタム エンティティがあります。私はCRMサービスを使用しています。変更を公開し、プロジェクトの Web サービス参照を更新しました。

コードでこの関係にアクセスするにはどうすればよいですか? CRMService コードを使用して関係を参照するにはどうすればよいですか?

多対多のコードをいくつか見つけて、それが難しいことは理解していますが、1 対多の場合はどうでしょうか。

ありがとう!

4

1 に答える 1

1

一対多の各関係には、次の 2 つの重要な点があります。

  1. 名前 - これはあまり使用されませんが、たとえば、取引先責任者は、取引先企業の主要な取引先責任者を表す取引先企業と関係があります。この名前は「account_primary_contact」です。
  2. 多エンティティ (外部キー) のフィールド。主連絡先の場合、これは「primarycontactid」です。

1 対多の関係でできることは主に 3 つあります (ここでの例ではレイト バインド エンティティを使用しており、スニペットではプライマリ コンタクト関係を使用します)。

1. 2 つのレコード間のリンクを作成する

基本的には、外部キーにリンク先の ID を入力するだけです。

//Create a contact
Guid contactId = service.Create(new DynamicEntity("contact"));

//Create a lookup which we will use to link the contact and account
Lookup lookup = new Lookup();
lookup.Value = contactId;
lookup.type = "contact";

//Create an account which is linked to the contact record
DynamicEntity account = new DynamicEntity("account");
account["name"] = "Test Account";
account["primarycontactid"] = lookup;
Guid accountId = service.Create(account);

2. それらの関係によってどのレコードがリンクされているかを調べる

したがって、これは LinkEntities を使用する QueryExpression を作成する場合です。

LinkEntity link = new LinkEntity();
link.LinkFromEntityName = "contact";
link.LinkFromAttributeName = "contactid";
link.LinkToEntityName = "account";
link.LinkToAttributeName = "primarycontactid";

または、関連するレコードをプライマリ レコードにリンクされたものにフィルターする ConditionExpression。

ConditionExpression condition = new ConditionExpression();
condition.AttributeName = "primarycontactid";
condition.Operator = ConditionOperator.Equal;
condition.Values = new string [] { contactId.ToString() };

MSDNの完全な例。

3. 2 つのレコード間のリンクを解除する

したがって、これは外部キーを null に設定することで実現されます。

DynamicEntity account = new DynamicEntity("account");
account["primarycontactid"] = null;
service.Update(account);
于 2012-09-23T23:03:55.267 に答える