使用对象作为数据源编写自定义Hive提供程序

时间:2012-06-15 21:59:58

标签: umbraco5 umbraco-hive

我正在尝试创建一个能够为某些对象工作的配置单元。

对象可能看起来像这样

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(Umbraco 5 Hive Provider和Umbraco 5 Simple Hive Provider)下载并检查了两个Hive提供程序,但缺少文档有点令人不安。我还下载了一些其他示例配置单元,如Wordpress配置单元提供程序,但是它与Visual Studio库中的配置文件有很大不同。

理念

我习惯使用像ObjectDataSource这样的东西,如果需要,上面的例子可以补充完整的CRUD。

现在,我假设一个Hive提供商能够用内容服务Umbraco的不同部分(对吗?)。只需设置一个新的存储库然后去?我现在已经知道如何连接所有部分,甚至如何将数据提供给提供者。

如何帮助我将所有作品组合在一起?

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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

那么定制蜂巢提供商有什么意义呢?

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

回到业务需求,具体来说,你想在哪里存储数据? - 鉴于你有一些与平面文件存储相关的字段和属性,让我们说一个TypedEntity (一个模型)对一个文件是等效的,并写一些pseduocode:

第一步,就像你说'将数据存入存储库'。这包括返回到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配置中将它连接起来,让它匹配。例如而不是匹配内容:\\,您的文件管理器可能匹配:\\

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