将Umbraco成员属性存储在单独的表中

时间:2014-12-28 01:25:18

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

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

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

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

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

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

检查会员会有困难吗?

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

1 个答案:

答案 0 :(得分:1)

我会将所有数据存储在umbraco成员资格中的成员的PROFILE中。例如。时区,头发颜色......这对其他开发者来说有意义找回数据。

对于所有其他数据,您有以下几种选择:

关系

如果要将节点链接到成员,或将节点链接到节点,或者......关系链接2个umbraco实体,可以是单向或双向。如果您有颜色节点,则可以将所有成员链接到此节点。只需在开发人员部分创建“favoriteColor”关系,将节点链接到成员。做一些编程,你就完成了。不要忘记关系是链接2个umbraco实体的数据库记录。因此,如果您在前端使用它来取消一些数据库负载,请考虑一些缓存。详细了解Relationship Api in the umbraco documentation

内容

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

外部数据

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