从Kentico数据库读取未声明为';自定义表格';

从Kentico数据库读取未声明为';自定义表格';,kentico,Kentico,我的问题很简单。我正在使用Kentico 9及其SQL Server数据库进行工作,该数据库包含由外部承包商直接从SQL Management Studio添加的几个表。事实上,这些表用于存储将为站点显示的自定义内容,但在代码中,它们没有用于进行查询的代码。我的意思是,他们没有信息和提供者课程 根据这一点,Kentico数据库中的所有表都可以通过调用这些类上的方法来访问,但这次我没有 类似于此,如果我使用我的表名,它将不起作用: var user = UserInfoProvider.GetU

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

根据这一点,Kentico数据库中的所有表都可以通过调用这些类上的方法来访问,但这次我没有

类似于此,如果我使用我的表名,它将不起作用:

var user = UserInfoProvider.GetUserInfo("administrator");
var items = CustomTableItemProvider.GetItems("MyTable")
.TopN(10)
.WhereEquals("ItemCreatedBy", user.UserID)
.OrderBy("ItemCreatedWhen");
我的问题是:

我可以按名称查询任何表吗?

最后一件事:
我不能将这些表声明为“自定义表”,因为它似乎是CMS中的一个bug。

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

因此,我会选择以下选项之一:

  • 使用实体框架或类似的工具来处理该数据
  • 创建适当的自定义表,甚至自定义模块,并将数据推送到其中。不确定为什么无法创建自定义表。。。你的错误是什么
  • 如果只需要在UI上显示数据(而不需要在后端处理),只需使用自定义查询

  • 希望这能有所帮助。

    我认为必须在系统中注册一个对象(通过Kentico UI或API创建),才能使用对象查询从数据库中提取

    因此,我会选择以下选项之一:

  • 使用实体框架或类似的工具来处理该数据
  • 创建适当的自定义表,甚至自定义模块,并将数据推送到其中。不确定为什么无法创建自定义表。。。你的错误是什么
  • 如果只需要在UI上显示数据(而不需要在后端处理),只需使用自定义查询

  • 希望这有帮助。

    或者您可以使用自己的SQL查询提取数据:

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

    尽管如此,我还是建议您在自定义模块内创建一个自定义类(比自定义表更健壮),并使用生成的Info和InfoProvider类获取和操作数据。

    或者您可以使用自己的SQL查询提取数据:

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

    尽管如此,我还是建议您在自定义模块内创建一个自定义类(比自定义表更健壮),并使用生成的Info和InfoProvider类来获取和操作数据。

    如果您是在代码中访问,那么您可以使用传统的好方法。如果您想从数据库中提取数据以显示在网站上,您也可以通过创建并使用转换来显示字段,然后在页面上使用转发器来显示转换后的数据。或者,您可以使用带有基本转发器的SQL数据源,但仍然需要创建转换来显示数据。这两种方法都允许您从CMS UI中访问表中的数据,无需触摸任何代码。

    如果您是在代码中访问数据,那么您可以使用传统的好方法。如果您想从数据库中提取数据以显示在网站上,您也可以通过创建并使用转换来显示字段,然后在页面上使用转发器来显示转换后的数据。或者,您可以使用带有基本转发器的SQL数据源,但仍然需要创建转换来显示数据。这两种方法都允许您从CMS UI中访问表中的数据,无需触摸任何代码。

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

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


    最后,我认为创建自定义表而不是直接的DB表不应该有任何问题,我们唯一需要确保自定义表的代码名应该是唯一的,这意味着不要尝试使用完全相同的名称,因为它会导致异常,因为DB中已经存在相同的表名。您可以分享在创建自定义表时遇到的异常,以便我可以进一步帮助您。

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

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


    最后,我认为创建自定义表而不是直接的DB表不应该有任何问题,我们唯一需要确保自定义表的代码名应该是唯一的,这意味着不要尝试使用完全相同的名称,因为它会导致异常,因为DB中已经存在相同的表名。您可以分享创建自定义表时遇到的异常,以便我可以进一步帮助您。

    嗨,Roman,事实上,您的第一个选择就是我正在做的事情。我开始考虑使用ORM来管理这些表。当我尝试注册为自定义表时遇到的问题是,当我选择“使用现有数据库表”时,我无法在下面的组合框“数据库表名称:”中添加任何内容。我从未尝试创建基于数据库的自定义表