public T DynamicObject(T entity)
        {
            var methodName = ((int)PropertyUtilities.TryGetProperty(entity, "Id") != 0) ?
                             "Update" : "Create";
            var method        = _dynamicObjectService.GetType().GetMethod(methodName);
            var genericMethod = method.MakeGenericMethod(typeof(T));
            var result        = genericMethod.Invoke(_dynamicObjectService, new object[] { entity });

            return((T)result);
        }
        public T Update <T>(T entity) where T : class
        {
            var fieldsToIgnore = new string[] { "Id", "Created", "CreatedBy", "Modified", "ModifiedBy" };
            int id             = (int)PropertyUtilities.TryGetProperty(entity, "Id");
            T   found          = FindById <T>(id);

            foreach (PropertyInfo property in typeof(T).GetProperties())
            {
                if (!fieldsToIgnore.Contains(property.Name))
                {
                    PropertyUtilities.TrySetProperty(found, property.Name, property.GetValue(entity));
                }
            }

            PropertyUtilities.TrySetProperty(found, "Modified", DateTime.Now);
            PropertyUtilities.TrySetProperty(found, "ModifiedBy", 1);

            _context.SaveChanges();

            return(found);
        }