1

我想在 Umbraco 7 中创建一个基于会员的网站,跟随 umbraco.tv 视频并阅读文档让我走得很远。

我的成员将拥有自定义属性、名字、姓氏、最喜欢的颜色、拥有的帽子等。我一直将这些属性中的每一个添加为自定义属性,然后将它们分配给我想要的选项卡。这工作正常,然后我可以使用以下代码从代码中访问它们:

Members.GetCurrentMember().GetProperty("lastname").Value.ToString();

当我查看我的数据库时,我注意到这些自定义属性中的每一个都是cmsPropertyData表中的一行,通过nodeId列链接到cmsMember表。有没有办法可以将所有这些信息设置为存储在它自己的表中?

理想情况下,我希望每个成员都与最喜欢的颜色建立一对多的关系,以及与其他表格的一对多关系;例如,每个成员可能有 100 顶帽子。我设置它的最佳方式是什么?我是否应该在我的 Umbraco 数据库中为 HatsOwned 和 FavouriteColours 创建自定义表,然后为每个成员分配一个唯一的 ID,以便我可以正确设置我的外键?这样我只需要将成员唯一 ID 存储在 cmsPropertyTable 中。有没有更好的方法让 Umbraco 处理?使用 Umbraco orm 或 EF 检索成员是否有困难?

非常感谢任何帮助或指示!

4

1 回答 1

1

我会将所有数据存储在会员的个人资料中,在 umbraco 会员中。例如时区、头发颜色……这对其他开发人员找回数据是有意义的。

对于所有其他数据,您有几个选择:

关系

如果您想将节点链接到成员,或节点到节点,或者... 关系链接 2 个 umbraco 实体,可以是一种方式或两种方式。如果您有一个颜色节点,您可以将所有成员链接到该节点。只需在开发者部分创建一个“favoriteColor”关系,将节点链接到成员。做一些编程,你就完成了。不要忘记关系是链接 2 个 umbraco 实体的数据库记录。因此,如果您在前端使用它来减轻一些数据库负载,请考虑一些缓存。在 umbraco 文档中阅读有关关系 Api 的更多信息。

内容

使用代码创建新节点非常容易,例如对文章的评论。因为每次创建(和发布)节点时都会重新发布 xml 缓存,所以如果您有大量更新,请不要使用内容节点来存储数据。

外部数据

在 umbraco 之外存储数据是完全合法的。只需创建您自己的表格(或您创建的任何服务的内容)。你可以使用每一个你想要的 ORM,但我会推荐 PetaPoco。原因很明显。Umbraco 也使用它。它将使您成为更好的 Umbraco 开发人员。在 stackoverflow 上有一篇关于如何在 umbraco 中处理外部数据的详细帖子。

于 2014-12-28T13:10:50.510 回答