MemberService.Saving
和事件通常在MemberService.Saved
更新 LastLoginDate 之类的内容时触发,这就是您使用MembershipHelper.Login
.
您可以做的是在继续索引过程之前检查某些属性并检查它们是否脏(意味着它们已被更改)。
您可以使用 IsNewEntity() 扩展方法检查传递给 Saved 事件的成员对象是否是新的,如下所述:http: //our.umbraco.org/documentation/Reference/Events-v6/determining-new-实体
如果成员对象不是新的,您可以迭代属性并检查是否只有 LastLoginDate 是脏的,在这种情况下,您可能不想触发索引器。
这是一个例子:
public class RegisterEvents : ApplicationEventHandler
{
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
MemberService.Saved += MemberService_Saved;
}
void MemberService_Saved(IMemberService sender, Core.Events.SaveEventArgs<IMember> e)
{
foreach (var member in e.SavedEntities)
{
if (member.IsNewEntity())
{
//This is a brand new member object
//Trigger indexing
}
else
{
var dirtyMember = (ICanBeDirty) member;
var dirtyProperties = member.Properties.Where(x => x.IsDirty()).ToList();
if (dirtyMember.IsDirty() || dirtyProperties.Count() > 1)
{
//More then one property or the member object itself is dirty
//so we know that its not only LastLoginDate that is changed
}
}
}
}
}