从Kentico数据库中读取一个表,该数据库未被声明为'自定义表'

时间:2016-10-20 17:30:14

标签: kentico

我的问题非常简单。我正在使用其SQL Server数据库工作Kentico 9,该数据库包含几个表,这些表是由外部承包商直接从SQL Management Studio添加的。事实是,这些表用于存储将为网站显示的自定义内容,但是,在代码中,他们没有用于进行查询的代码。我的意思是,他们没有信息提供商类。

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中的一个错误。

4 个答案:

答案 0 :(得分:2)

Or you can pull data using your own SQL query:

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

Nevertheless I would recommend to create a custom class inside a custom module (much more robust than custom tables) instead and use the generated Info and InfoProvider classes to get and manipulate data.

答案 1 :(得分:1)

我认为必须在系统中注册一个对象(通过Kentico UI或API创建),以便通过对象查询从DB中提取。

所以我选择以下选项之一:

  1. 使用实体框架或类似的东西来处理该数据
  2. 创建适当的自定义表格甚至自定义模块并在那里推送数据。不确定为什么你不能创建一个自定义表...你得到的错误是什么?
  3. 如果您只需要在UI上显示数据(不在后端进行处理) - 只使用自定义查询
  4. 希望这有帮助。

答案 2 :(得分:1)

如果您正在访问代码,那么您可以采用老式的方式。如果要从数据库中提取数据以显示在网站上,您还可以通过创建custom query并使用转换来显示字段,然后使用页面上的转发器来显示转换后的数据。或者,您可以将SQL数据源与基本转发器一起使用,但仍需要创建转换以显示数据。这两种方法都允许您从CMS UI中访问表中的数据,无需触及任何代码。

答案 3 :(得分:1)

如果您的目标是从这些数据库表中读取数据以在网页上进行转换,例如使用CMS Repeater webpart,您只需在Kentico中创建自定义查询并使用它加载数据。您可以找到有关如何创建自定义自定义查询和使用它加载数据的详细信息here

另一方面,您还可以编写自定义类并定义自定义方法,您可以使用自己的SQL查询来提取数据,如下所示: var ds = ConnectionHelper.ExecuteQuery(“select ....”,null,QueryTypeEnum.SQLQuery);

最后我认为创建自定义表而不是那些直接数据库表应该没有任何问题,只有我们必须确保自定义表的代码名称应该是唯一的意味着不要尝试使用完全相同的名称,因为由于DB中已存在相同的表名,因此会导致异常。您可以在创建自定义表时分享您获得的异常,以便我可以进一步帮助您。