public async Task PatchOrder_patches_order_via_test_context()
        {
            var context = new CGC.DH.Order.API.Models.TestContext();
            context.Orders = new CGC.DH.Order.API.Models.TestDbSetOrder() as DbSet<CGC.DH.Order.API.Models.Order>;
            context.Orders.Add(new CGC.DH.Order.API.Models.Order { OrderID = 1, MobileNumber = "123-123-1234", PickUpName = "ZZZ" });
           
            var service = new CGC.DH.Order.API.Controllers.OrdersController(context);
            service.Request = new HttpRequestMessage();
            service.Configuration = new HttpConfiguration();
            
            var delta = new System.Web.OData.Delta<CGC.DH.Order.API.Models.Order>();
            delta.TrySetPropertyValue("PickUpName", "ChangedName");
            delta.TrySetPropertyValue("MobileNumber", "111-111-1111");

            var patchedOrder = await service.Patch(1, delta);

            Assert.AreEqual(1, context.Orders.Count());
            Assert.AreEqual("ChangedName", context.Orders.Single().PickUpName);
            Assert.AreEqual("111-111-1111", context.Orders.Single().MobileNumber);
            Assert.AreEqual(1, context.SaveChangesAsyncCount);
        }
        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);
            }
        }