こんにちは。sinyです。
この記事ではPowerAppsのCommon Data Service(2020/8時点ではDataFlexと呼ぶ)におけるエンティティの標準フィールド、プライマリー名フィールド、キーの仕組みについてまとめてみました。
CDSのエンティティで自動生成されるフィールドについて
CDSでエンティティを作成すると自動的に生成されるフィールドがあります。
エンティティを作成した後に「種類」タブでソートすると確認しやすいです。
例えば、以下のようなエンティティを登録するとします。
種類タブで並び替えると以下の様に「カスタムと標準」があることがわかります。
「カスタム」は自分で定義したフィールドで、「標準」がCDSが自動的に生成してくれるフィールドです。
標準&必須で生成されるフィールド
CDSが自動的に生成するフィールドはたくさんありますが、その中で表示名を除いて設定変更も削除もできないフィールドが3つあります。
- 所有者(データ型:所有者、必須)
- 状態(データ型:オプションセット[アクティブ/非アクティブ]、必須)
- エンティティの表示名に指定した一意識別子フィールド
これらはCDSで標準で実装される&設定変更できないフィールドのようです。
3つ目の一意識別子フィールドはエンティティ登録時の一番上の「表示名」に指定した名称で自動的にエンティティのレコードを一意に特定するためのキーフィールドが生成されます。
もう1つ標準で生成されるフィールドが1つあります。
それがプライマリー名フィールドです。
プライマリー名フィールドは必須として自動生成されますが、データ型と必須の設定は後から変更できます。
プライマリフィールドはキーではない
既に説明した通りエンティティを作成するとプライマリーフィールドというフィールドが生成されます。
名前だけ見るとこれがエンティティのレコードを一意に識別するためのキーフィールド(いわゆる主キーにあたるもの)のように思ってしまいますがそうではないようです。
以下の記事が大変参考になりましたが、プライマリーフィールドはキーではなく他のエンティティとの関係を確立する際の検索処理に使用されるもののようです。
他のエンティティとの関係を確立する際の検索処理に使用される。