【问题标题】:Store Umbraco Member Properties in Separate Table将 Umbraco 成员属性存储在单独的表中
【发布时间】:2014-12-28 01:25:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: asp.net-membership umbraco umbraco7 umbraco-mvc


    【解决方案1】:

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

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

    关系

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

    内容

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

    外部数据

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

    【讨论】:

    • 非常感谢您的回答和链接,我已经阅读了它们并学到了很多东西,但我仍然不完全了解如何最好地解决我的问题。我想将我最喜欢的颜色存储在 Umbraco 之外的表中(但可以在同一个数据库中)。您说这样做很好,那么有没有办法可以在 cmsMember 和我的自定义表之间建立外键关系?我可以在 SSMS 中使用 cmsMember nodeId 作为主键吗?这似乎工作正常,但我只是不知道它是否正确。感谢您的帮助!
    • 是的,使用 SSMS 创建外键。
    • 以上一切都很好。最后决定使用自定义成员资格提供程序,因为理想情况下我希望将我的 Umbraco 数据库与主数据库分开。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    相关资源
    最近更新 更多