public virtual void When(IAttributeStateDeleted e) { ThrowOnWrongEvent(e); this.Deleted = true; this.UpdatedBy = e.CreatedBy; this.UpdatedAt = e.CreatedAt; foreach (var innerState in this.AttributeValues) { this.AttributeValues.Remove(innerState); var innerE = e.NewAttributeValueStateRemoved(innerState.Value); ((AttributeValueEventBase)innerE).CreatedAt = e.CreatedAt; ((AttributeValueEventBase)innerE).CreatedBy = e.CreatedBy; innerState.When(innerE); //e.AddAttributeValueEvent(innerE); } foreach (var innerState in this.Aliases) { this.Aliases.Remove(innerState); var innerE = e.NewAttributeAliasStateRemoved(innerState.Code); ((AttributeAliasEventBase)innerE).CreatedAt = e.CreatedAt; ((AttributeAliasEventBase)innerE).CreatedBy = e.CreatedBy; innerState.When(innerE); //e.AddAttributeAliasEvent(innerE); } }