データベースの活用
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore.Data.Databaseクラスを使ってSitecoreデータベースにアクセスできます。デフォルトのSitecore構成には以下のデータベースが含まれます:
- マスター - CMSユーザーをサポートするすべてのコンテンツの全バージョンを含みます。
- Web - ウェブサイトをサポートするマスターからの公開版を掲載しています。
- Core - Sitecore CMSのユーザーインターフェースを制御するデータを含みます。
以下のセクションで説明する技術を使ってSitecoreデータベースにアクセスできます。
覚えておくことが重要です:
-
Sitecoreのデータベースにアクセスするには 、必ずSitecore APIを使うべきです。
-
Sitecoreデータベースにアクセスする際にSQLコマンドを使う べき ではありません。
-
すべてのコードはデフォルトでコンテキストユーザーのセキュリティコンテキスト内で動作します。
-
存在しないデータベース、アイテム、フィールド、その他のリソースへのアクセスを試みるたびに、Nullを返すか例外が発生することがあります。
コンテキストユーザーが操作を完了するために必要なアクセス権を持っていない場合、特定のタスクに対してセキュリティユーザースイッチャーやセキュリティ無効化装置を使うことができます。
-
開発者はアイテムやフィールドにアクセスする際にNullの有無を確認するべきです。
簡潔にするために、このドキュメントのコード例は常にNullのチェックをしているわけではありません。
-
Sitecore APIはSitecoreのデータベースにアクセスします。
また、適切な.NET APIを使って外部データストアにアクセスすることもできます。
-
パブリッシングターゲットデータベースからアイテムを作成、更新、削除した場合、マスターからそのパブリッシングターゲットへの公開はその変更を上書きします。
パブリッシング対象データベースへの書き込みは避けるべきです。公開対象データベースへの書き込みリスクを減らすために、プレゼンテーションコンポーネントからSitecoreデータベースに書き込みしないでください。
-
名前、部分パス、フルパス、ID、そして言語や様々なAPIメソッドのバージョンなどの条件を指定することで、データテンプレートやフィールドにアクセスできます。
最高のパフォーマンスを得るためには可能な限りIDを使用しつつ、定数やその他の特徴を使って複数のクラスに文字列をハードコーディングしないようにしましょう。
コンテンツデータベースへのアクセス
コンテンツエディターなどのCMSユーザーインターフェースコンポーネントはコンテンツデータベースと相互作用します。デフォルトのコンテンツデータベースはマスターデータベースです。Sitecore Desktopのようなユーザーインターフェースでは、ユーザーがコンテンツデータベースを別のデータベースに変更できます。
!注プレゼンテーションコンポーネントはほぼ例外なくコンテキストデータベースにアクセスし、データベース名で参照しません。
コンテンツデータベースにアクセスするためにSitecore.Context.ContentDatabaseプロパティを使うことができます。例えば、コンテキストデータベースにアクセスするには:
Sitecore.Data.Database content = Sitecore.Context.ContentDatabase;
!noteCMSのユーザーインターフェースコンポーネントは、コンテキストデータベースの構成データを使ってコンテンツデータベースのデータ管理を行います。
名前によるデータベースへのアクセス
Sitecore.Configuration.Factory.GetDatabase()メソッドを使って特定のデータベースにアクセスできます。例えば、マスターデータベースにアクセスするには:
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
データを公開またはインポートするアプリケーションロジックは通常、マスターデータベースの名前でアクセスします。
!注最初のパラメータがweb.config内の*/configuration/sitecore/databases/database*要素のIDと一致しない場合、Sitecore.Configuration.Factory.GetDatabase()メソッドは例外を投げます。この比較は大文字大文字を区別します。
コンテキストデータベースへのアクセス
コンテキストデータベースは、Webクライアントがアクセスする論理サイトに関連付けられた主要なデータベースです。公開されたウェブサイト上で動作するプレゼンテーションコンポーネントの場合、コンテキストデータベースはWebなどの公開対象データベースの一つです。エクスペリエンスエディターでは、コンテキストデータベースがマスターデータベースです。Desktop、コンテンツエディター、その他のCMSユーザーインターフェースでは、コンテキストデータベースがコアデータベースです。
プレゼンテーションコンポーネントは、データベース名を参照する代わりに、ほぼ例外なくコンテキストデータベースにアクセスします。
Sitecore.Context.Databaseプロパティを使ってコンテキストデータベースにアクセスできます。例えば、コンテキストデータベースにアクセスするには:
Sitecore.Data.Database context = Sitecore.Context.Database;