2015-05-28 2 views
0

Я читал несколько примеров реализации Sitecore DataProvider в одной базе данных и отдельной таблице (используя параметры файла конфигурации, чтобы указать конкретную таблицу и столбцы, пытающиеся интегрироваться). Просто задайтесь вопросом, возможно ли реализовать dataprovider, работающий с несколькими таблицами, а не с одним. Невозможно найти примеры на этом, просто прося какие-либо идеи или возможности.Sitecore DataProvider с несколькими таблицами

Первая проблема, с которой я сталкиваюсь, когда пытаюсь работать с несколькими таблицами, - это переопределить метод GetItemDefinition. Поскольку этот метод возвращает только одно определение элемента и ему нужно знать, в какой конкретной таблице он получит информацию об элементе. (Это указано в файле конфигурации, если он имеет дело только с одной таблицей). В основном я ищу способ переключения (динамически) между таблицами без изменения параметров конфигурационного файла каждый раз.

ответ

0

Если вы создаете пользовательский поставщик данных, тогда выполнение будет полностью зависеть от вас. Если вы следуете некоторым из таких примеров, например Northwind Dataprovider, тогда, когда вы указываете, что действия реализации действуют в одной базе данных, как указано в config. Но вы можете указать все, что вам нужно, в методах, которые вы реализуете, и запустить логику для переключения оператора select, который вы вызываете в таких методах, как GetItemDefinition() и GetItemFields(). Вы можете увидеть в exmaple Борей, что SQL-запрос динамически построен:

StringBuilder sqlSelect = new StringBuilder(); 
sqlSelect.AppendFormat("SELECT {0} FROM {1}", nameField, table); 

Если вы строите только для чтения DataProvider, то вы можете быть в состоянии использовать в SQL Views, что позволяет написать запрос, чтобы объединить результаты из нескольких таблиц с использованием UNION operator. Пока каждая запись имеет уникальный идентификатор через таблицы (т. Е. Если вы используете идентификаторы GUID в качестве идентификатора), это должно работать нормально.

Смежные вопросы