public NodeData(NodeType nodeType, ContentListType contentListType) { staticDataIsModified = new bool[StaticDataSlotCount]; staticData = new object[StaticDataSlotCount]; PropertyTypes = NodeTypeManager.GetDynamicSignature(nodeType.Id, contentListType == null ? 0 : contentListType.Id); TextPropertyIds = PropertyTypes.Where(p => p.DataType == DataType.Text).Select(p => p.Id).ToArray(); dynamicData = new Dictionary <int, object>(); }
/// <summary> /// Resets dirty properties by clearing the dictionary used to track changes. /// </summary> /// <remarks> /// Please note that resetting the dirty properties could potentially /// obstruct the saving of a new or updated entity. /// </remarks> public override void ResetDirtyProperties() { base.ResetDirtyProperties(); //loop through each property group to reset the property types var propertiesReset = new List <int>(); foreach (var propertyGroup in PropertyGroups) { propertyGroup.ResetDirtyProperties(); foreach (var propertyType in propertyGroup.PropertyTypes) { propertyType.ResetDirtyProperties(); propertiesReset.Add(propertyType.Id); } } //then loop through our property type collection since some might not exist on a property group //but don't re-reset ones we've already done. foreach (var propertyType in PropertyTypes.Where(x => propertiesReset.Contains(x.Id) == false)) { propertyType.ResetDirtyProperties(); } }