private static void ParseComponent(EdmEntityObject entity, ComponentHelpClass item, object value) { int i = 0; EdmStructuredObject actualEntity = entity; for (i = 0; i < item.Depth - 1; i++) { var componentName = item.SplitedComponents[i]; object local = null; actualEntity.TryGetPropertyValue(componentName, out local); if (local == null) { var declaredProperty = actualEntity.ActualEdmType.DeclaredProperties.FirstOrDefault(w => w.Name == componentName); var edmComplexObject = new EdmComplexObject(declaredProperty.Type.AsComplex()); actualEntity.TrySetPropertyValue(componentName, edmComplexObject); actualEntity = edmComplexObject; } else { actualEntity = (EdmStructuredObject)local; } } var propertyName = item.SplitedComponents[item.Depth - 1]; actualEntity.TrySetPropertyValue(propertyName, value); }
private Dictionary <string, ComponentHelpClass> BuildMap(IDictionary <string, object> row) { if (row == null) { throw new ArgumentNullException(nameof(row)); } Dictionary <string, ComponentHelpClass> dictionary = new Dictionary <string, ComponentHelpClass>(); foreach (var column in row) { if (column.Key.Contains(_separator)) { ComponentHelpClass expandoObject = new ComponentHelpClass(); expandoObject.SplitedComponents = column.Key.Split(_separator); expandoObject.Depth = expandoObject.SplitedComponents.Length; dictionary.Add(column.Key, expandoObject); } } return(dictionary); }