public static List<ViewInfo> GetViews(string connectionString, params string[] filterViews)
 {
     List<ViewInfo> views = new List<ViewInfo>();
     SqlCommand cmd = new SqlCommand();
     string query = "Select TABLE_NAME as Name from information_schema.views";
     if (filterViews.Length > 0)
     {
         query = query + " WHERE TABLE_NAME in " + filterViews.ToWhereClauseInCommaList();
     }
     views = cmd.GetTypedList<ViewInfo>(query,
         CommandType.Text, connectionString);
     foreach (ViewInfo v in views)
     {
         v.ConnectionString = connectionString;
     }
     return views;
 }
 public static List<ViewColumn> GetViewColumns(string connectionString, params string[] filterViews)
 {
     SqlCommand cmd = new SqlCommand();
     string query = "Select COLUMN_NAME AS Name, table_name as ViewName, ORDINAL_POSITION AS Position, COLUMN_DEFAULT As DefaultValue,IS_NULLABLE AS IsNullable, DATA_TYPE as DataType,  CHARACTER_MAXIMUM_LENGTH as MaxLength,NUMERIC_PRECISION as NumericPrecision, CHARACTER_OCTET_LENGTH as OctetLength from information_schema.Columns order by ORDINAL_POSITION";
     if (filterViews.Length > 0)
     {
         query = "Select COLUMN_NAME AS Name, table_name as ViewName, ORDINAL_POSITION AS Position, COLUMN_DEFAULT As DefaultValue,IS_NULLABLE AS IsNullable, DATA_TYPE as DataType,  CHARACTER_MAXIMUM_LENGTH as MaxLength,NUMERIC_PRECISION as NumericPrecision, CHARACTER_OCTET_LENGTH as OctetLength from information_schema.Columns WHERE table_name in [[filter]] order by ORDINAL_POSITION"
             .Replace("[[filter]]", filterViews.ToWhereClauseInCommaList());
     }
     return cmd.GetTypedList<ViewColumn>(query,CommandType.Text, connectionString);
 }