Kentico中的多对多关系

时间:2011-03-08 12:44:35

标签: c# content-management-system many-to-many kentico

是否有关于如何构建基于多对多关系的Kentico CMS门户实施的最佳实践(即销售食品并且有大部分食谱的网站 - 每个产品用于许多食谱,每个食谱可以使用网站上出售的许多产品)?

Kentico是否只是错误的工具,或者Kentico中是否有解决方案来处理这种关系?

6 个答案:

答案 0 :(得分:7)

我会考虑内置的相关文档系统。在文档的属性选项卡下,有相关文档的部分。此处描述了该功能:

Document Properties, Related Docs

如果这对您的网站来说是一个很大的功能,您可以将该部分作为另一个选项卡添加到现有的“页面”,“设计”,“表单”,“属性”选项卡中,以便于访问。您只需要修改站点管理器 - >的模块区域。发展。另一个问题是:它们在技术上是单向关系,但您可以将查询结构化为两种方式:

SELECT *
FROM CMS_Document d
JOIN CMS_Relationship r 
    ON (d.DocumentID = r.LeftNodeID
    OR d.DocumentID = r.RightNodeID)
Where DocumentID = 100

上面的代码会将CMS_Document表连接到CMS_Relationship表,为您提供ID为100的Document的所有相关文档。

如果您在数据库中占据一席之地,相关文档的表结构非常简单:

Related Document Tables

正如McBeev建议的那样,我会为产品和食谱创建自定义文档类型。然后你可以按照我上面的描述链接它们。祝你好运!

答案 1 :(得分:2)

开箱即用它不能很好地支持多对多,但是你应该可以通过一些自定义开发来实现它。创建2自定义文档类型,例如食谱和产品,然后创建自定义表单控件以管理关系。然后,您将窗体控件放在页面上,以便字段可以在节点的“表单”选项卡上进行管理。表单控件(如果要从两种类型进行管理,则为2)将是多对多类型控件,例如复选框列表或多选。然后在保存时,您将使用API​​或SQL代码保存到连接表而不是文档本身(或子文档类型)。您可能需要手动创建连接表。

http://www.kentico.com/docs/devguide/index.html?developing_form_controls.htm

答案 2 :(得分:0)

使用自定义表格并编写自己的自定义网页部件将帮助您实现这些目标。

答案 3 :(得分:0)

您还可以为产品和食谱创建自定义文档类型,然后使用内置链接到现有文档功能。

我同意dvanbale,你也可以用自定义表来完成这个。

这取决于你想要做什么。

答案 4 :(得分:0)

我已经碰到了几次,并使用sql函数和sql转发器为内容树的父子层次结构快速解决了问题。绝不是一个强大的实现。如果这是您的迫切需要,我同意自定义表可能是最佳选择。

我实际上刚刚发布了我所做的详细版本。我在搜索时发现了这个,看它是否被编入索引。你可以在这里看到它:

http://www.kenticosolutions.com/Developer-Tips/Tip/May-2011/Many-to-Many-relationships-in-the-Kentico-CMS-Cont.aspx

答案 5 :(得分:0)

可以使用kentico CMS直接执行此操作,无需编写任何自定义代码或查询。

幸运的是,我写了一篇关于它的文章并成功实现了它,它为内容管理员提供了足够的灵活性来管理关系数据而无需开发人员。

Related Content through a repeater