📚

Avanade Beef の参照データ (Reference Data) を理解する

に公開

はじめに

Avanade Beef (以下、Beef) は ASP.NET Core をベースとした Web API の自動生成ツールです。

https://github.com/Avanade/Beef

概要については以下のスライドもご覧ください。

参照データとは

Beef には通常のエンティティの他に参照データと呼ばれる機能があります。参照データが何かについては公式で説明されています。

https://github.com/Avanade/Beef/blob/v4.2.20220531/docs/Reference-Data.md

種類 説明
参照データ アプリケーションにおける選択肢を提供するデータ。更新されることはほとんどない。 国、性別、支払い方法
マスターデータ 現在の状態を維持するために継続的に保守されるデータ。中程度の頻度で更新される。 顧客、仕入先、製品
トランザクションデータ 特定のイベントや処理を管理するために記録されるデータ。 発注書、請求書

アプリケーションの実装レベルでいうと、参照データは列挙型に該当します。列挙型と異なるのは、列挙型は標準では値に対応する名前を持たないのに対して、参照データは値 (Code) と名前 (Text) をセットで持つことができる点です。エンティティからは疑似的にリレーションすることで参照データを型として定義できます。その他に次の機能があります。

  • SortOrder による値の任意の順番でのソート
  • IsActive による値のアクティブ/非アクティブ化
  • 基本クラスの拡張による追加のプロパティの提供

Code は主キーではありませんが、一意である必要があります。

注意点として、データの性質上、参照データは書き込みの API を提供しません。その代わり、Database および EntityFramework テンプレートの場合は RefData.yml を定義することで初期値を設定できます。カスタムで API を作ることで書き込みも可能です。ただし、データはキャッシュされているため、更新した値がすぐに反映されない可能性があります。

テンプレートによりデータの格納方法も異なります。Database および EntityFramework テンプレートの場合は参照データの種類ごとにテーブルを作成する必要があります。Cosmos テンプレートの場合は RefData コンテナーにすべての種類の参照データが格納されます。

おわりに

参照データとマスター データを混同すると運用上のトラブルにつながる可能性があります。参照データの特性を正しく理解し、用途に応じて適切に使いわけてください。

Discussion