---
title: "データベースの活用"
slug: "working-with-databases"
abstract: "APIを使ってSitecoreデータベースにアクセスする方法。"
---
# データベースの活用

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;