Example #1
0
        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);
        }
Example #2
0
        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));
            }
        }