【问题标题】:Writing a Custom Hive Provider using objects as datasource使用对象作为数据源编写自定义 Hive 提供程序
【发布时间】:2012-06-15 21:59:57
【问题描述】:

我正在尝试创建一个能够处理某些对象的配置单元提供程序。

一个对象可能看起来像这样

public class MyContent
{
    public System.Collections.Generic.List Content { get; set; }
}

public class ContentExample
{
    public string Title { get; set; }
    public string Text { get; set; }
}

public class MyFiles
{
    public System.Collections.Generic.List Files { get; set; }
}

public class FileExample
{
    public System.IO.FileInfo File { get; set; }
}

我已经从 Visual Studio Gallery 下载并检查了两个 Hive 提供程序(Umbraco 5 Hive 提供程序和 Umbraco 5 Simple Hive 提供程序),但是缺少文档有点令人不安。我还下载了一些其他示例配置单元,例如 Wordpress 配置单元提供程序,但它与 Visual Studio 库中的配置单元完全不同。

理念

我习惯使用 ObjectDataSource 之类的东西,如果需要,上面的示例可以补充完整的 CRUD。

现在,我假设一个 Hive 提供商能够为 Umbraco 的不同部分提供内容(对吗?)。只需设置一个新的存储库就可以了?我现在已经知道如何连接所有部分,甚至知道如何将数据输入提供程序。

对我如何将所有部分组合在一起有任何帮助吗?

谢谢

【问题讨论】:

    标签: umbraco5 umbraco-hive


    【解决方案1】:

    第一步是退后一步,评估您的业务需求。你会允许用户在前端使用表单更新信息吗?您是否需要后台内容的树编辑器?您是否需要处理内置 ORM 之外的数据?

    如果这些问题的答案是否定的,蜂巢提供者就太过分了。使用简单的表面控制器或仅使用custom document type 评估解决方案。 Umbraco 5 是一个完整的 EAV/CR 系统,因此与某些 CMS 产品不同,您将能够表示您可以想象的任何 rdbs 结构

    ContentExample 可以表示为名为“Article”的文档类型,它具有 Title 和 Text 属性。只需定义此文档类型,我们就会立即在内容部分为我们的后台用户添加和编辑表单。我们甚至可以限制哪些节点能够拥有“文章”类型的子节点,例如新闻。

    同样,上传控件是一种允许您将文件附加到文档的字段类型。

    那么自定义配置单元提供程序的意义何在?

    自定义配置单元提供程序的目标是统一数据访问层的 CRUD 操作。 因此,数据可以存储在烘焙的 nhibernate orm、自定义表、RSS 提要甚至平面文件中,同时仍然使用通用接口来检索和更新它。如果这听起来像您的目标,请继续阅读。

    回到业务需求,具体来说,您希望在哪里实际存储数据?--假设您有一些与平面文件存储相关的字段和属性,假设一个 TypedEntity (一个模型)等价于一个文件并编写一些伪代码:

    第一步,正如您所说的“将数据放入存储库”。这涉及返回到那个 VS 模板,并用您的逻辑填充“未实现”的方法来存储和检索数据。

        protected override void PerformAddOrUpdate(TypedEntity entity)
        {
            // step 1: serialize the typed entity to xml
            // step 2: write the file to the hdd, making sure that the file name is named using the                 hive id so that we can pull it back later.
        }
    

    编写完数据访问层或 DAL 后,您可以将其连接到 hive 配置中,为其提供匹配的 url。例如而不是匹配内容:\\,您的可能会在文件管理器上匹配:\\

    我们可以让我们的后台用户能够通过编写a custom tree 添加新实体(间接地,新文件),我们可以通过宏向我们的前端用户显示结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-08
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      相关资源
      最近更新 更多