エンティティサービスを作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
カスタムビジネスオブジェクトとやり取りするためにEntityServiceを使用します。
!注Sitecoreはビジネスオブジェクトを提供していません。EntityServiceのビジネスオブジェクトを実装するのはあなた次第ですが、EntityServiceの実装は必要なビジネスオブジェクトの実装を容易にする足場を提供します。
クライアント側のJavaScriptからEntityServiceを利用することも、RESTful APIを通じて利用できます。
このトピックでは、以下の方法を説明します:
エンティティサービスを作成
エンティティサービスを作成するには:
-
ビジネスオブジェクトを表すクラスを作成します。このクラスはSitecore.Services.Model.EntityIdentityから派生しなければなりません。必要な検証属性を追加します。
-
ビジネスオブジェクトを永続化するためのクラスを作成しましょう。このクラスはSitecore.Services.Core.IRepository
インターフェースを実装しなければなりません。 -
Sitecore.Services.Infrastructure.Sitecore.Services.EntityServiceBaseから派生したコントローラークラスを作成し、Tはステップ1で作成したビジネスオブジェクトタイプです。このクラスにはServicesController属性を付け、パラメータのないコンストラクタを持つ必要があります。
この例はサービスコントローラの定義を示しています:
ServicesController EnableCors(origins: "*", headers: "*", methods: "*") public class ExampleController : EntityServiceBase
{ public ExampleController(IRepository entityRepository) : base(entityRepository) { } public ExampleController() : this(new ExampleRepository()) { } } EnableCors属性は任意です。
ビジネスオブジェクトをSitecoreに保存する
コントローラークラス(HTTP経由でビジネスオブジェクトをサーバーに届ける)とリポジトリクラス(ビジネスオブジェクトを格納するための永続性ロジックを実装)で懸念を分けることができます。
!注リポジトリクラスをSitecoreに紐付ける必要はありません。JavaScriptやHTTPの配管コードを使ってビジネスオブジェクトをサーバーに移動させ、それらのオブジェクトをサードパーティのデータベースや他のサブシステムに保存するEntityServiceを定義することも可能です。
Sitecore。Services.Contribプロジェクトは、ビジネスオブジェクトをSitecoreのコンテンツツリーに保存したいときに使える基本クラスを提供します。このクラスは、自分だけのカスタムリポジトリクラスを実装するための出発点を提供します。
Sitecoreにビジネスオブジェクトを格納するには:
-
カスタムリポジトリクラスを作成し、そこから導出してくださいSitecore.Services.Contrib.Data.SitecoreItemRepository
。 -
以下の抽象および仮想メソッドを実装し、ビジネスオブジェクトプロパティとアイテムのフィールド間をマッピングするコードを提供します。
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
Sitecore.Services.Contrib.Data.SitecoreItemRepository
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}ルートに一致すると選択されます。