デフォルトマッピングの要件

モデル間マッピングは、以下の条件がすべて満たされている場合に最適です。

  • ソースレコードはフラットJSONです。つまり、すべてのソースフィールドがルートレベルにあります。
  • ソースフィールドとエンティティプロパティの関係は1対1です。
  • ソース値では、シンプルな型変換など、単純な変換のみが必要です。

ただし、すべての条件が満たされていなくても、QuickStartでマッピングを作成してベースラインコードを生成し、それをカスタマイズしてより複雑なプロパティや変換を処理できます。

フラットJSON要件

次の表に、有効なソースレコードと無効なソースレコードの例を示します。有効なソースはフラットJSON階層です。ここで、idfirstname lastnameはルートレベルにあります。無効なソースでは、firstlastname内のオブジェクトでネストされているため、マップできるのはidのみです。

有効なソースJSON(フラット) 無効なソースJSON(ネスト)
{ "id": 1234, "firstname": "John", "lastname": "Smith" }
{ "id": 1234, "name": { "first": "John", "last": "Smith" } }

1対1のマッピング要件

Orderエンティティがカスタマーからの注文を表している場合を考えます。1つの注文にカスタマーは1つしかないため、カスタマー関連の各プロパティ(id, contactname, companyname, address, phoneなど)がソースフィールドに1対1で対応します。これは、デフォルトマッピングの1対1の要件を満たしています。

ただし、カスタマーの注文に複数の製品が含まれている場合は、製品エンティティの異なるインスタンスに対する参照の配列で表されます。これは、カスタムマッピングコードを必要とする多対1の関係です。

シンプルな値変換要件

デフォルトのマッピングでは、シンプルな型変換などの単純な変換を処理できます。例えば、「1234」などの数値を含む文字列を簡単に変換し、10進数型のエンティティプロパティに割り当てることができます。

ただしソース値で、日付の正規化、文字列の連結、計算など、より高度な変換が必要な場合は、マッピングから生成されたコードをカスタマイズして、こうした変換を処理する必要があります。例えば、請求書で請求する合計金額の計算などがあります。