Umbraco:更新特定成员 属性

Umbraco: Update Property on specific member

我是 运行 Umbraco 7 的论坛,我希望通过他的 ID 更新特定成员的 属性。

这是我试过的:

var authorId = Model.Content.GetPropertyValue<int>("postAuthor", 0);
var author = Members.GetById(authorId);


umbraco.cms.businesslogic.member.Member member = umbraco.cms.businesslogic.member.Member.GetMemberFromEmail(author.GetPropertyValue("email").ToString());
member.getProperty("postCounter").Value = Convert.ToInt32(member.getProperty("postCounter")) + 1;
member.Save();

但这行不通,下面的行抛出此错误:

umbraco.cms.businesslogic.member.Member member = umbraco.cms.businesslogic.member.Member.GetMemberFromEmail(author.GetPropertyValue("email").ToString());

它说:警告:umbraco.cms.businesslogic.member.Member 已过时:"Use the MemberService and the Umbraco.Core.Models.Member models instead"

谁能帮我解决这个问题?

var memberService = ApplicationContext.Current.Services.MemberService
var member = memberService.GetById(authorId)
member.SetValue("postCounter", newValue);
memberService.Save(member);

千万不要这样做!!

您需要像这样在您自己单独的 table 中存储经常更新的计数,因为每次您保存一段内容(是的,成员对象基本上也是一段内容)您将在版本 table 中保存一个新版本。您的所有自定义属性也将与新版本一起再次保存。此外,这是一个相当数据库密集型的操作,完全没有必要,只需要一个包含两列的 table:memberId 和 count,你就完成了,这一切都非常精简和高效。

如果你在 razor 脚本中,你想做类似的事情:

var authorId = Model.Content.GetPropertyValue<int>("postAuthor", 0);
var ms = ApplicationContext.Current.Services.MemberService;
var member = ms.GetById(authorId);
member.SetValue("postCounter",member.GetValue("postCounter"));

但正如塞巴斯蒂安所说,您可能希望以不同的方式来提高性能