2016-10-20 2 views
0

Мой вопрос довольно прост. Я работаю над Kentico 9 с его базой данных SQL Server, которая содержит несколько таблиц, которые были добавлены непосредственно из SQL Management Studio внешним подрядчиком. Дело в том, что эти таблицы используются для хранения пользовательского контента, который будет отображаться для сайта, но в коде у них нет кода для создания запросов. Я имею в виду, они не имеют Info и Провайдер классов.Прочитайте таблицу из базы данных Kentico, которая не была объявлена ​​как «пользовательская таблица»

https://docs.kentico.com/display/K82/Retrieving+database+data+using+ObjectQuery+API

Согласно с этим, все таблицы в базе данных Kentico можно получить с помощью вызова методов этих классов, но у меня нет на этот раз.

Что-то вроде этого, он не будет работать, если я использую мое имя таблицы:

var user = UserInfoProvider.GetUserInfo("administrator"); 
var items = CustomTableItemProvider.GetItems("MyTable") 
.TopN(10) 
.WhereEquals("ItemCreatedBy", user.UserID) 
.OrderBy("ItemCreatedWhen"); 

Мой вопрос:

можно запросить любую таблицу по его имени?

Одна последняя вещь: я не могу объявил эти таблицы как «пользовательские таблицы», потому что, кажется, ошибка в CMS.

ответ

2

Или вы можете извлекать данные, используя свой собственный SQL запрос:

var ds = ConnectionHelper.ExecuteQuery("select ....", null, QueryTypeEnum.SQLQuery); 

Тем не менее, я бы рекомендовал создать пользовательский класс внутри пользовательского модуля (гораздо более надежными, чем пользовательские таблицы) вместо и использовать сгенерированный Info и Типы InfoProvider для получения и управления данными.

1

Я думаю, что объект должен быть зарегистрирован в системе (создан через пользовательский интерфейс Kentico или API), чтобы вытащить из БД объектный запрос.

Так что я бы выбрать один из следующих вариантов:

  1. Использование Entity Framework или что-то подобное для работы с этими данными
  2. Создать соответствующие пользовательские таблицы или даже пользовательский модуль и передавать данные там. Не знаете, почему вы не можете создать пользовательскую таблицу ... Какая ошибка вы получаете?
  3. Если вам необходимо представить данные о пользовательском интерфейсе только (без обработки на задней часть) - использовать только пользовательские запросы

Надеется, что это помогает.

+0

Привет, Роман, на самом деле ваш первый вариант - это то, что я делаю на самом деле. Я начал думать об использовании ORM для управления этими таблицами. Проблема, которую я получаю при попытке зарегистрироваться в качестве настраиваемой таблицы, заключается в том, что, когда я выбрал «Использовать существующую таблицу базы данных», я не могу поместить ничего в выпадающее имя «Таблица таблиц базы данных» ниже. –

+1

Я никогда не пытался создать пользовательскую таблицу на основе существующей. Вы можете попытаться создать новую пользовательскую таблицу и перенести данные из существующей таблицы. –

+0

Я мог бы попробовать это тоже ... спасибо Роман, вы были очень полезны. –

1

Если у вас есть доступ к коду, вы можете сделать это по-старому. Если вы хотите извлечь данные из базы данных для отображения на веб-сайте, вы также можете сделать это, создав custom query и используя преобразование для отображения полей, а затем используйте повторитель на странице для отображения преобразованных данных. В качестве альтернативы вы можете использовать источник данных SQL с базовым ретранслятором, но вам все равно нужно создать преобразование для отображения данных. Оба метода позволяют вам получать доступ к данным в таблицах из пользовательского интерфейса CMS, не нужно прикасаться к коду.

1

Если ваша цель - считывать данные из этих таблиц базы данных для преобразования на веб-странице, например. используя веб-часть CMS Repeater, вы можете просто создать пользовательский запрос (ы) в самом Kentico и загрузить данные, используя его.Вы можете найти детальную информацию о том, как создавать собственные пользовательские запросы и загружать данные, используя это.

С другой стороны, вы также можете написать свои пользовательские классы и определить настраиваемые методы, в которых вы можете извлекать данные, используя свой собственный SQL-запрос: var ds = ConnectionHelper.ExecuteQuery ("select ....", null , QueryTypeEnum.SQLQuery);

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

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

  • Нет связанных вопросов^_^