リポジトリの設計パターン

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecoreコンテンツにデータを書き込む各Connectプロセッサは、リポジトリ デザイン パターンに基づいており、 Sitecore.Commerce.Products.configファイルに関連付けられた設定エントリがあります。次のコード スニペットには、ManufacturerRepositoryの既定の構成が表示されています。

<manufacturerRepository type="Sitecore.Commerce.Data.Products.ManufacturerRepository, Sitecore.Commerce" singleInstance="true">
<path ref="paths/manufacturers" />
<template>{8ECDC0A6-3A85-4F89-8F49-8A53AA75595E}</template>
<prefix>Manufacturer_</prefix>
</manufacturerRepository>

すべてのリポジトリ設定には、次の共通点があります。

  • 名前と、実装を参照するtype属性。名前は要素名で、命名スキームは 単数形のエンティティ名 + Repositoryです (例: manufacturerRepository)。

  • メインの <paths> 要素を参照し、リポジトリのルートがどこにあるかを指定する <path> パラメータ要素。

  • リポジトリが操作するテンプレートのIDを含む <template> パラメータ要素。テンプレートは、特定のアイテム・タイプの新しいインスタンスを作成するときに使用されます。

  • IDGeneratorへの入力として使用される任意だが固定のプレフィックスを含む <prefix> パラメーター要素と、結果が一意のGUID ID (一意のアイテムIDとして使用できる) であることを確認するための外部IDが含まれます。詳細については、「カスタムIDジェネレーターの実装」を参照してください。

名前が "product" で始まる特別なリポジトリ タイプがあります。これらのリポジトリ タイプは、データを個別のリポジトリに格納するのではなく、個別のリポジトリへの参照を使用してメイン製品エンティティを拡張します。たとえば、productManufacturerRepositoryリポジトリは、製品アイテムと関連する製造元アイテムとの間の参照を管理する責任があります。 productManufacturerRepositoryの構成を次のコード スニペットに示します。

テンプレート要素とパス要素の代わりに、コード スニペットでは <param> 要素を使用して、関連する製造元への参照 (アイテムIDなど) を保持する製品アイテムのフィールドの名前を指定します。これらの種類のリポジトリは適切なアイテムIDを生成する必要があるため、<manufacturerRepository>の構成で同じプレフィックスが使用されたことを知る必要があります。

<productManufacturerRepository type="Sitecore.Commerce.Data.Products.ProductFieldRepository, Sitecore.Commerce" singleInstance="true">
<param desc="productFieldName">Manufacturer</param>
<param desc="productPrefix">Product_</param>
<path ref="paths/manufacturers" />
<prefix>Manufacturer_</prefix>
</productManufacturerRepository>
メモ

パイプラインでエンティティをSitecoreに保存するために使用されるだけでなく、リポジトリはIDを提供することで、特定のタイプのオブジェクト インスタンスを取得するために使用できます。

すべてのリポジトリは、入力としてIDを受け取り、指定されたエンティティ型のインスタンスを返すメソッドを提供します。

public virtual TEntity Get(string entityKey)
Retrieving a specific product looks like this:
var product = this.productRepository.Get("external id");
この記事を改善するための提案がある場合は、 お知らせください!