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); }
internal static void SetEntityPropertyValue(this DbDataReader reader, int fieldIndex, EdmStructuredObject entity, bool lowerName = false) { string name = reader.GetName(fieldIndex); if (lowerName) { name = name.ToLower(); } if (reader.IsDBNull(fieldIndex)) { entity.TrySetPropertyValue(name, null); return; } var t = reader.GetFieldType(fieldIndex); entity.TryGetPropertyType(name, out Type et); if (t == typeof(DateTime)) { entity.TrySetPropertyValue(name, new DateTimeOffset(reader.GetDateTime(fieldIndex))); } else if (et == typeof(bool?) || et == typeof(bool)) { entity.TrySetPropertyValue(name, reader[fieldIndex].ToString() != "0"); } else { entity.TrySetPropertyValue(name, reader.GetValue(fieldIndex)); } }
/// <summary> /// Sets the property value and unwraps it from a DTO wrapper if necessary. /// </summary> public static bool TrySetPropertyValue <T>(this EdmStructuredObject targetObject, string propertyName, T value) { if (value != null) { object unwrappedValue; if (PropertyValueWrappingHelper.TryUnwrapEdmObject(value, out unwrappedValue)) { return(targetObject.TrySetPropertyValue(propertyName, unwrappedValue)); } } return(targetObject.TrySetPropertyValue(propertyName, value)); }
internal static void SetEntityPropertyValue(this DbDataReader reader, int fieldIndex, EdmStructuredObject entity) { string name = reader.GetName(fieldIndex); if (reader.IsDBNull(fieldIndex)) { entity.TrySetPropertyValue(name, null); return; } if (reader.GetFieldType(fieldIndex) == typeof(DateTime)) { entity.TrySetPropertyValue(name, new DateTimeOffset(reader.GetDateTime(fieldIndex))); } else { entity.TrySetPropertyValue(name, reader.GetValue(fieldIndex)); } }