【问题标题】:Sitecore DataProvider with multiple tables具有多个表的 Sitecore DataProvider
【发布时间】:2015-05-28 15:03:11
【问题描述】:

我一直在阅读多个 Sitecore DataProvider 在单个数据库和单个表上实现的示例(使用配置文件参数来指定尝试与之集成的特定表和列)。只是想知道是否可以实现在多个表上工作的数据提供程序,而不仅仅是一个。找不到任何关于此的示例,只是询问任何想法或可能性。

当我尝试处理多个表时遇到的第一个问题是重写 GetItemDefinition 方法。由于此方法仅返回一个项目定义,并且需要知道它将从哪个特定表中获取项目信息。 (如果只处理一张表,则在配置文件中指定)。基本上我正在寻找一种在表之间(动态)切换而无需每次都更改配置文件参数的方法。

【问题讨论】:

    标签: c# .net sitecore sitecore7 dataprovider


    【解决方案1】:

    如果您要创建自定义数据提供程序,那么实现完全由您决定。如果您一直在关注一些示例,例如Northwind Dataprovider,那么正如您所说,该实现作用于配置中指定的单个数据库。但是您可以在您实现的方法中指定您需要的任何内容,并运行逻辑来切换您在GetItemDefinition()GetItemFields() 等方法中调用的select 语句。您可以在 Northwind 示例中看到 SQL 查询是动态构建的:

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

    如果您正在构建一个只读数据提供程序,那么您可以使用SQL Views,允许您编写一个查询以使用UNION operator 组合来自多个表的结果。只要每条记录都有跨表的唯一 ID(即,如果您使用 GUID 作为 ID),那么这应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2013-04-15
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      相关资源
      最近更新 更多