public static void Patch <TEntityType>(this System.Web.OData.Delta <TEntityType> d, TEntityType original, String[] includedProperties, String[] excludedProperties) where TEntityType : class
        {
            Dictionary <string, PropertyAccessor <TEntityType> > _propertiesThatExist = InitializePropertiesThatExist <TEntityType>();
            var changedProperties = d.GetChangedPropertyNames();

            if (includedProperties != null)
            {
                changedProperties = changedProperties.Intersect(includedProperties);
            }
            if (excludedProperties != null)
            {
                changedProperties = changedProperties.Except(excludedProperties);
            }
            PropertyAccessor <TEntityType>[] array = (
                from s in changedProperties
                select _propertiesThatExist[s]).ToArray();
            var array2 = array;

            for (int i = 0; i < array2.Length; i++)
            {
                PropertyAccessor <TEntityType> propertyAccessor = array2[i];
                propertyAccessor.Copy(d.GetEntity(), original);
            }
        }