---
title: "ContactManager参照"
slug: "contactmanager-reference"
abstract: "ContactManagerの概要と例。"
---
# ContactManager参照

このContactManagerは内部でSitecoreが基盤XConnectDataAdapterProviderにリクエストを渡すために使用され、xConnectで面を設定するために新しい匿名連絡先を保存するなど、限られた数のシナリオで必要とされます。

以下の例は、Sitecoreコンテキスト内でコンタクトマネージャーのインスタンスを取得する方法を示しています。

var manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager;

if (manager != null)
{
 // Use contact manager
}

> !注ContactRepositoryは使用してはいけません。進行中のセッションがない連絡先を変更するには、[xConnect Client API](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/xconnect-client-api-overview.html "xConnect Client API overview")をご利用ください。進行中のセッションで連絡先を更新するには、ファセットの更新に関するこのトピックを参照してください。

## AddIdentifier(Guid id, ContactIdentifier identifier)

この方法は、バックグラウンドでxConnectを呼び出して現在の連絡先に識別子を追加します。現在の連絡先が **既知** で、追加の既知または匿名の識別子を追加したい場合はこの方法を使います。 AddIdentifier() を呼び出すと、まだ保存されていなければ連絡先がxConnectに保存されます。

> !注ここでのidは [トラッカー識別子](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/identifying-contacts.html "Identifying contacts")であり、xConnectによって生成される連絡先IDではありません。

以下の例はAddIdentifier()の使い方を示しています:

var manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager;

if (manager != null)
{
 var currentContact = Sitecore.Analytics.Tracker.Current.Contact;

 manager.AddIdentifier(currentContact.ContactId, new ContactIdentifier(identifier.Source, identifier.Identifier, ContactIdentificationLevel.Known));
}

以下の点に注意してください:

-   提出しようとした識別子がすでに使用中であれば、xConnectは例外を投げます。
-   識別子が追加された後、 Sitecore.Analytics.Tracker.Current.Contact.Identifiers コレクションは現在再読み込み **されていません** 。

## CreateContact(NotNull ID ID)

このメソッドはトラッカーがセッション内で新しいトラッカーコンタクト(Sitecore.Analytics.Tracking.Contact)を作成するために使います。この時点で、xConnectにはコンタクトが存在せず、IsNewプロパティはtrueに設定されています。

> !注この文脈でのidは [トラッカー識別子](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/identifying-contacts.html "Identifying contacts") となり、最終的な接触IDではなく、xConnectによって生成されます。

## LoadContact(NotNull 文字列ソース、NotNull 文字列識別子)

この方法は、xDBから識別子/ソースの組み合わせが一致する連絡先を読み込み、Sitecore.Analytics.Tracker.Contactとして表現します。この方法で連絡先が存在するかどうかを確認できます。連絡先を更新するには、xConnect Client APIを使用します。

## LoadContact(Guid contactId, bool exclusive=true)

この方法は、xDBからcontactIdがそのトラ [ッカー識別子](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/identifying-contacts.html "Identifying contacts") と一致し、Sitecore.Analytics.Tracker.Contactとして表現する連絡先を読み込みます。稀に排他ロックが必要な場合は、SaveAndReleaseInSharedSessionStateを使って連絡先を解放することを忘れないでください。

> !注「ロック」とは、xConnectのロックではなく、共有セッション状態のロックです。他のソースは依然としてxConnectの連絡先を更新できます。

## SaveAndReleaseInSharedSessionState(NotNull 連絡先)

この方法はLoadContact()と組み合わせて使われます。排他ロックを要求した場合は、この方法でロックを解除してください。

## SaveContactToCollectionDb(連絡先)

この方法は、進行中のセッションを中断せずに連絡先をxConnectに保存できます。匿名連絡先を設定する前に保存する必要がある場合はこの方法を使ってください。 contact.ContactSaveModeをContactSaveMode.AlwaysSaveに設定してください。

> !注SaveContactToCollectionDb(Guid contactId) オーバーロードは使わないでください。

## RemoveFromSession(Guid contactId)

この方法は、共有セッション状態から連絡先を除去します。以下の例のように使用してください:

manager.RemoveFromSession(Sitecore.Analytics.Tracker.Current.Contact.ContactId);
Sitecore.Analytics.Tracker.Current.Session.Contact = manager.LoadContact(Sitecore.Analytics.Tracker.Current.Contact.ContactId);

次のリクエスト時に連絡先は共有セッション状態に再読み込みされます。xConnect Client APIを使って [その連絡先の面を変更し](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/set-contact-facets-in-session.html "Set contact facets in session")た後に再読み込みしたい場合は、この方法を使います。これにより、セッションにキャッシュされるデータが可能な限り最新の状態であることが保証されます。

> !注RemoveFromSession() 方法は9.0アップデート1以降のみ利用可能です。