EntityServiceを作成する

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

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

EntityServiceを使用して、カスタムビジネスオブジェクトと対話します。

メモ

Sitecoreはビジネス オブジェクトを提供しません。EntityServiceのビジネス・オブジェクトを実装するかどうかはユーザー次第ですが、EntityServiceの実装は、必要なビジネス・オブジェクトを簡単に実装するためのスキャフォールディングを提供します。

EntityServiceは、クライアント側のJavaScriptから、またはRESTful APIを介して使用できます。

このトピックでは、次の方法について説明します。

EntityServiceを作成する

EntityServiceを作成するには:

  1. ビジネスオブジェクトを表すクラスを作成します。このクラスはSitecore.Services.Model.EntityIdentityから派生させる必要があります。必要な検証属性を追加します。

  2. ビジネス・オブジェクトを永続化するためのクラスを作成します。このクラスは、Sitecore.Services.Core.IRepository<T> インターフェイスを実装する必要があります。

  3. Sitecore.Services.Infrastructure.Sitecore.Services.EntityServiceBaseから派生したコントローラー・クラスを作成します。ここで、はステップ1で作成したビジネス・オブジェクト・タイプT。このクラスをServicesController属性で修飾する必要があり、パラメータのないコンストラクタを持つ必要があります。

    次の例は、サービス・コントローラーの定義を示しています。

    [ServicesController]
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class ExampleController : EntityServiceBase<SimpleData>
    {
        public ExampleController(IRepository<SimpleData> entityRepository)
            : base(entityRepository)
        {
        }
        public ExampleController()
            : this(new ExampleRepository())
        {
        }
    }

    EnableCors属性はオプションです。

ビジネス オブジェクトをSitecoreに保存する

コントローラ・クラス (ビジネス・オブジェクトをHTTP経由でサーバーに配信する) とリポジトリ・クラス (ビジネス・オブジェクトを格納する永続性ロジックを実装する) の間で、懸念事項を分離できます。

手記

リポジトリ クラスをSitecoreに関連付ける必要はありません。JavaScriptとHTTPのプラミング コードを使用してビジネス オブジェクトをサーバーに移動し、これらのオブジェクトをサード パーティのデータベースまたはその他のサブシステムに格納するEntityServiceを定義できます。

Sitecore.Services.Contribプロジェクトは、Sitecoreコンテンツ ツリーにビジネス オブジェクトを保存する場合に使用できる基本クラスを提供します。このクラスは、独自のカスタム・リポジトリ・クラスを実装するための開始点となります。

Sitecoreにビジネス オブジェクトを保存するには:

  1. カスタムリポジトリクラスを作成し、Sitecore.Services.Contrib.Data.SitecoreItemRepository<T>から派生させます。

  2. 次の抽象メソッドと仮想メソッドを実装して、ビジネス オブジェクトのプロパティとアイテムのフィールドとの間にマップするコードを提供します。

    protected abstract T CreateModelFrom(Item item); protected abstract string GetItemName(T entity); protected virtual void UpdateFields(T entity, Item item)

Sitecore.Services.Contrib.Data.SitecoreItemRepository<T> クラスは、masterデータベース内のSitecoreアイテムを操作します。

Sitecoreテンプレート タイプとコンテンツ ルートを指定して、アイテムをコンストラクター パラメーターとして保存するには、次のようにSitecore.Services.Contrib.Data.SitecoreItemRepository<T> 派生タイプを作成します。

protected override Category CreateModelFrom(Item item) protected override string GetItemName(T entity) protected override void UpdateFields(T entity, Item item)
where T : Sitecore.Services.Core.Model.EntityIdentity
Member of 

カスタムメソッドを追加する

  • カスタムアクションメソッドをコントローラークラスに追加できます。これらは、リクエストが {namespace}/{controller}/{id}/{action} ルートと一致するときに選択されます。

この記事を改善するための提案がある場合は、 お知らせください!