2016-06-03 5 views
0

Извините, если мой вопрос слишком простой, я не могу понять, что в коде, когда я пишу:Контекст Sitecore использует базу данных, мастер, сеть или ядро?

var myItem = Sitecore.Context.Database.GetItem("....");

Какая база данных используется в данном случае, либо Master Db или Web Db? В этой ссылке «Context Class» написано, что «Объект Context содержит информацию о текущем состоянии, таком как текущая база данных, текущий язык, текущий домен и т. Д.»

Как узнать, что является актуальным? например Текущая база данных

ответ

1

Данные Sitecore хранятся в нескольких базах данных. С точки зрения веб-разработчика два наиболее часто используемых мастера - это мастер, который содержит данные, редактируемые в Content Manager, и веб, в котором хранятся данные, используемые для отображения веб-сайта.

Доступ к базам данных осуществляется через класс базы данных. Чтобы получить ссылку на базу данных, использовать класс Factory, как:

Sitecore.Data.Database master = 
    Sitecore.Configuration.Factory.GetDatabase("master"); 

Имена баз данных и детали реализации определены в web.config ниже разделе.

Всякий раз, когда код пользователя вызывается Sitecore, автоматически назначается так называемая контекстная база данных. Вы можете получить доступ к этой базе данных с помощью класса Context, как:

Sitecore.Data.Database current = Sitecore.Context.Database; 

Когда код выполняется на веб-сайте (то есть в макете или расширение XSL), база данных контекста будет веб. Когда код выполняется в Content Manager, база контекстов будет активной. Основная база данных содержит данные, необходимые Менеджеру контента.

Чтобы получить доступ к базе данных редактируется в Content Manager, вы можете использовать

Database content = Sitecore.Context.ContentDatabase; 

Свойство ContentDatabase будет пустым при выполнении в контексте веб-сайта. Только контент-редакторы (такие как Content Manager) обычно поддерживают это свойство.

+0

Код на веб-сайте не всегда будет использовать базу данных «web» .. поскольку он определен в определении сайтов, его можно назвать чем угодно. Некоторые реализации используют несколько целей публикации для нескольких баз данных. – Gatogordo

+0

Да, я полностью согласен с тобой. –

0

База данных контекста - это ваш сайт или код, к которому активно обращаются. Для вашего сайта база данных по умолчанию определена в определении <site> и становится «контекстной» базой данных для этого сайта. Например, по умолчанию «веб-база» представляет собой контекстную базу данных для определения сайта «Веб-сайт».

<site name="website" database="web" ...../>

Sitecore.Context.Database.Name даст вам имя текущей базы данных контекста.

+0

Неправильное использование. В Sitecore Desktop при переключении между master, web и core вы меняете базу данных контента, а не базу данных контекста –

+0

Да, вы правы. Я просто пытался проиллюстрировать эту разницу, но поскольку интернет постоянный, я пересмотрю комментарий, чтобы не вызвать путаницу для будущих читателей. –

0

База данных контекста определяется вашим запросом (в конвейере httprequestbegin имеется база данных данных), но может быть изменена в коде. Это означает, что вы на самом деле не отвечаете. Это может быть что угодно.

Предположим, что ваш код работает в макете или рендеринге (под), что похоже на правильное предположение и пропускает более сложные части как базу данных ядра и так далее. В этом случае ваш контекст будет определяться определением сайтов. В стандартной настройке это будет «веб-база».Но вы можете определить другие базы данных (для создания нескольких целей публикации), а затем имя может быть другим («pub» ...).

В режиме редактирования, однако, в базе данных контекста могут быть разные вещи. Обычно «мастер» при редактировании, «веб» при предварительном просмотре ...

Итак, как говорится в названии - все зависит от контекста, в котором работает ваш код.

0

Большая часть ответа уже ответила, но ответ: это зависит от того, какая часть Sitecore выполняется. Например, если вы просматриваете страницу, она по умолчанию будет использовать основную базу данных. Но если вы просматриваете опубликованную версию сайта, то будете использовать веб-базу данных.