internal IDictionary <string, object> GetColumnValuesFromRoute(HttpContextBase context)
        {
            RouteValueDictionary        routeValues  = DynamicDataRouteHandler.GetRequestContext(context).RouteData.Values;
            Dictionary <string, object> columnValues = new Dictionary <string, object>();

            foreach (var column in Columns)
            {
                if (Misc.IsColumnInDictionary(column, routeValues))
                {
                    MetaForeignKeyColumn foreignKeyColumn = column as MetaForeignKeyColumn;
                    if (foreignKeyColumn != null)
                    {
                        // Add all the foreign keys to the column values.
                        foreach (var fkName in foreignKeyColumn.ForeignKeyNames)
                        {
                            columnValues[fkName] = routeValues[fkName];
                        }
                    }
                    else
                    {
                        // Convert the value to the correct type.
                        columnValues[column.Name] = Misc.ChangeType(routeValues[column.Name], column.ColumnType);
                    }
                }
            }
            return(columnValues);
        }