ITableMetadataCache

ITableMetadataCacheサービスはDataverseのテーブルメタデータへのキャッシュアクセスを提供します。Dataverseから初回アクセス時にテーブルメタデータを取得し、その後のリクエストのためにキャッシュし、サーバーへの繰り返しの往復を避けます。

使用例

ITableMetadataCacheを注入し、テーブルの論理名でGetAsyncを呼び出します。最初の呼び出しはDataverseからメタデータを取得します。その後の呼び出しはキャッシュされた値を返します。

React Blazor

含まれるもの

返却された TableMetadata オブジェクトには以下が含まれます:

  • Columns — データ型、検証ルール、ラベル、制約を含む列メタデータの集合。
  • PrimaryIdColumn / PrimaryNameColumn — テーブルのプライマリキーおよびプライマリネームカラムの論理名。
  • OneToMany / ManyToOne / ManyToMany — 関連テーブル間のナビゲーションのための関係メタデータ。
  • PrimaryImageColumn — テーブルのプライマリ画像列(存在する場合)の論理名。

列メタデータへのアクセス

Columnsコレクションを使って特定の列のメタデータを調べてください。最大長さ、ターゲットテーブル、オプション値など型固有のプロパティに対して、適切なメタデータタイプ(例:StringMetadata、LookupMetadata、ChoiceMetadata)にキャストします。

React Blazor

関係メタデータへのアクセス

OneToMany、ManyToOne、ManyToManyコレクションを使って、関係名で関係メタデータを調べてください。これは、社内でSubGridやManyToManyLookupEditが関連するテーブルを解決しクエリを構築するために使われています。

React Blazor

ヒント

テーブルのメタデータを読むには ITableMetadataCache を IPowerPortalsProService.RetrieveTableMetadataAsync より好みます。キャッシュは冗長なネットワーク呼び出しを避け、すべてのPowerPortalsProコンポーネントで内部的に利用されます。

ITableMetadataCache Interface

方法

名称
パラメータ
種類
概要
GetAllHeadersAsyncCancellationToken token
Task<IReadOnlyList<TableHeader>>
アイデンティティレベルのメタデータ(論理、スキーマ、表示名、そしていくつかのフラグ)を返します — 環境内の各テーブルに対して、表示名順に並べて。 テーブルごとのエントリの隣にキャッシュされ、別のパス上に置かれるのではなく、なぜなら 同じ高価なリソースを別の読み方で読むと、テーブルメタデータの取得は重く、 すべての呼び出し元はDataverseを再クエリするのではなく、キャッシュからサービスを受けるべきです。ポピュレーション テーブルピッカーが動機付けの理由の一つです — ITypedCache`2.GetAsync(<U>,System.Threading.CancellationToken) 千のテーブルが埋められると、ドロップダウンはすべての列を取得します。
GetAsyncstring key
CancellationToken token
Task<TableMetadata>
キーでキャッシュからアイテムを取得します。もしアイテムがキャッシュされていない場合は、基底のソースからフェッチされ、キャッシュされて返されます。
GetManyAsyncIReadOnlyList<TableMetadataRequest> requests
CancellationToken token
Task<IReadOnlyList<TableMetadata>>
複数のテーブルのメタデータを一度に返し、それぞれが列に絞られます。 関係性、そのリクエスト名。 上記の二つの中間は、1つのテーブルに対して全テーブル、または すべてのテーブルに対して識別子のみです。これは、少しだけ 多くの中から — テーブルの後ろにあるルックアップ列の表示名 例えば、関係は一つのテーブル上ではなく関連するテーブルに存在します 質問されること。 キャッシュに既に持っているものから切り出したものなので、約30テーブルを尋ねるのは 30回の検索ではなく30回の辞書検索。縮小変更 どの列が戻ってくるか、それぞれが何を運ぶかではなく:名前付き列は次のように到着します。 全テーブルで読んだ通りに詳しく説明しています。 環境に存在しない表は、単に結果から存在しないということです スローよりも — バッチはテーブル名で一致することで読み返しやすいです ポジションを合わせることで。
名称: GetAllHeadersAsync
パラメータ: CancellationToken token
種類: Task<IReadOnlyList<TableHeader>>
概要: アイデンティティレベルのメタデータ(論理、スキーマ、表示名、そしていくつかのフラグ)を返します — 環境内の各テーブルに対して、表示名順に並べて。 テーブルごとのエントリの隣にキャッシュされ、別のパス上に置かれるのではなく、なぜなら 同じ高価なリソースを別の読み方で読むと、テーブルメタデータの取得は重く、 すべての呼び出し元はDataverseを再クエリするのではなく、キャッシュからサービスを受けるべきです。ポピュレーション テーブルピッカーが動機付けの理由の一つです — ITypedCache`2.GetAsync(<U>,System.Threading.CancellationToken) 千のテーブルが埋められると、ドロップダウンはすべての列を取得します。
名称: GetAsync
パラメータ: string key
CancellationToken token
種類: Task<TableMetadata>
概要: キーでキャッシュからアイテムを取得します。もしアイテムがキャッシュされていない場合は、基底のソースからフェッチされ、キャッシュされて返されます。
名称: GetManyAsync
パラメータ: IReadOnlyList<TableMetadataRequest> requests
CancellationToken token
種類: Task<IReadOnlyList<TableMetadata>>
概要: 複数のテーブルのメタデータを一度に返し、それぞれが列に絞られます。 関係性、そのリクエスト名。 上記の二つの中間は、1つのテーブルに対して全テーブル、または すべてのテーブルに対して識別子のみです。これは、少しだけ 多くの中から — テーブルの後ろにあるルックアップ列の表示名 例えば、関係は一つのテーブル上ではなく関連するテーブルに存在します 質問されること。 キャッシュに既に持っているものから切り出したものなので、約30テーブルを尋ねるのは 30回の検索ではなく30回の辞書検索。縮小変更 どの列が戻ってくるか、それぞれが何を運ぶかではなく:名前付き列は次のように到着します。 全テーブルで読んだ通りに詳しく説明しています。 環境に存在しない表は、単に結果から存在しないということです スローよりも — バッチはテーブル名で一致することで読み返しやすいです ポジションを合わせることで。