public static List <EdmProperty> GetPropertiesFromEntityModel(this DbContext context, Func <EdmProperty, bool> predicate)
        {
            MetadataWorkspace    workspace      = ((IObjectContextAdapter)context).ObjectContext.MetadataWorkspace;
            ObjectItemCollection itemCollection = (ObjectItemCollection)(workspace.GetItemCollection(DataSpace.OSpace));
            var varchars = itemCollection
                           .Where(gi => gi.BuiltInTypeKind == BuiltInTypeKind.EntityType)
                           .Cast <EntityType>()
                           .SelectMany(entityTypes => entityTypes.Properties
                                       .Where(predicate))
                           .ToList();

            return(varchars);
        }