エンティティの代替キーの定義

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

すべての Microsoft Dynamics 365 レコードには、GUID として定義されている一意の識別子を持っています。 これは、各エンティティの主キーです。 外部データ ストアと統合する必要がある場合は、Dynamics 365 内の一意の識別子への参照を格納するために、外部データベース テーブルに列を追加できる場合があります。 これにより、Dynamics 365 レコードにリンクするためのローカル参照を設けることができます。 ただし、外部データベースを変更できないことがあります。 ユーザーは、現在は、代替キーを使用して、外部のデータ ストアが使用する一意の識別子 (または一意の列の組み合わせ) に一致するように、Dynamics 365 エンティティの属性を定義できます。 主キーの代わりにこの代替キーを使用して、Dynamics 365 内のレコードを一意に識別できます。 どの属性が、レコードごとの一意の ID を表すかを定義できるようにする必要があります。 エンティティに対して一意となる属性を識別したら、それらの属性をカスタマイズ ユーザー インターフェイス (UI) によって、またはコードで、代替キーとして宣言できます。 このトピックでは、データ モデルでの代替キーの定義について説明します。

このトピックの内容

代替キーの作成

代替キーの取得および削除

代替キーのインデックス作成の監視

代替キーの作成

プログラムで、またはカスタマイズ ツールを使用して、代替キーを作成できます。 カスタマイズ ツールの使用の詳細については、「CRM レコードを参照する代替キーの定義」を参照してください。

代替キーをプログラムで定義するには、最初に、EntityKeyMetadata の種類のオブジェクトを作成する必要があります。 このクラスには、キー属性が含まれています。 キー属性が設定されると、CreateEntityKeyRequest メッセージを使用して、エンティティに対するキーを作成できます。 このメッセージは、エンティティ名と EntityKeyMetadata 値を、キーを作成するための入力として使用します。

代替キーを作成するときは、以下の制限に注意ください。

  • キー定義での有効な属性

    以下の種類の属性のみを、代替キーの定義に含めることができます。

    属性の種類

    表示名

    DecimalAttributeMetadata

    10 進数

    IntegerAttributeMetadata

    整数

    StringAttributeMetadata

    1 行のテキスト

  • 有効なキーのサイズ

    キーの作成時に、合計のキー サイズが、キー当たり 900 バイト、キー当たり 16 列などの SQL ベース のインデックスの制約に違反しないことを含め、キーがプラットフォームによってサポートされることの確認が行われます。 キー サイズがその制約に適合しない場合は、エラー メッセージが表示されます。

  • 1 つのエンティティに対する代替キーの定義の最大数

    Dynamics 365 インスタンス内の 1 つのエンティティに対して、代替キーの定義は最大 5 つです。

代替キーの取得および削除

代替キーを取得、または削除する必要がある場合は、コードを書かなくても、カスタマイズ UI を使用して、これを実行できます。 ただし、SDK は代替キーをプログラムで取得および削除するために、次の 2 つのメッセージを用意しています。

メッセージ要求クラス

説明

RetrieveEntityKeyRequest

指定した代替キーを取得します。

DeleteEntityKeyRequest

指定した代替キーを削除します。

1 つのエンティティのすべてのキーを取得するには、EntityMetadata クラスの新しい Keys プロパティを使用します。 これは、1 つのエンティティに対するキーの配列を取得します。

代替キーのインデックス作成の監視

代替キーはデータベース インデックスを使用して、一意性を実施し、検索のパフォーマンスを最適化します。 テーブルに多数のレコードが存在する場合は、インデックスの作成は長いプロセスになる可能性があります。 インデックスの作成をバックグラウンド プロセスで行うことによって、カスタマイズ UI とソリューションのインポートの応答性を向上させることができます。AsyncJob プロパティは、インデックスの作成を実行する非同期ジョブを参照します。EntityKeyIndexStatus プロパティは、インデックス作成のジョブの進捗に合わせてキーの状態を指定します。 この状態は、以下のいずれかになります。

  • 保留中

  • 処理中

  • アクティブ

  • 失敗

代替キーを API を使用して作成するときは、インデックスの作成が失敗した場合は、失敗の原因の詳細を掘り下げて、問題を修正し、ReactivateEntityKeyRequest メッセージを使用して、キー要求を再アクティブ化できます。

インデックス作成のジョブが保留中または進行中に、代替キーが削除されると、そのジョブは取り消され、インデックスが削除されます。

関連項目

代替キーを使用してレコードを作成
変更の追跡を使用してデータを外部システムに同期
Upsert を使用してレコードを挿入または更新

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権