private void AddChildEntity(IEntity entity, bool readOnly, bool child) { if (Configuration.Instance.ExcludeRegexIsMatch(entity.EntityKeyName)) { return; } if (readOnly) { if (ReadOnlyChildEntities.Count > 0 && ReadOnlyChildEntities.Contains(entity)) { return; } if (ReadOnlyRootEntities.Count > 0 && ReadOnlyRootEntities.Contains(entity)) { return; } if (child) { ReadOnlyChildEntities.Add(entity); } else { ReadOnlyRootEntities.Add(entity); } } else { if (DynamicRootEntities.Count > 0 && DynamicRootEntities.Contains(entity)) { return; } if (EditableChildEntities.Count > 0 && EditableChildEntities.Contains(entity)) { return; } if (EditableRootEntities.Count > 0 && EditableRootEntities.Contains(entity)) { return; } if (SwitchableObjectEntities.Count > 0 && SwitchableObjectEntities.Contains(entity)) { return; } if (child) { EditableChildEntities.Add(entity); } else { EditableRootEntities.Add(entity); } } }
private void OnSwitchableObjectChanged() { CleanTemplateContextByValue(Constants.SwitchableObject); foreach (var entity in SwitchableObjectEntities) { if (ContextData.Get(entity.EntityKeyName) != null) { ContextData.Remove(entity.EntityKeyName); } DynamicRootEntities.Remove(entity); EditableChildEntities.Remove(entity); EditableRootEntities.Remove(entity); ContextData.Add(entity.EntityKeyName, Constants.SwitchableObject); if (State == TemplateState.RestoringProperties) { continue; } //Many-To-One foreach (var childEntity in GetChildAssociations(entity.Associations)) { foreach (AssociationProperty property in childEntity.Properties) { AddChildEntity(property.Association.Entity, false, true); } } //One-To-Many & Many-To-Many foreach (var childList in GetChildListAssociations(entity.Associations)) { foreach (AssociationProperty property in childList.Properties) { AddChildList(property.Association.Entity, false, true); } } } }