public override IList<DatabaseColumn> ViewColumns(string viewName)
 {
     var columnLoader = new ViewColumnLoader(_schemaReader);
     if (string.IsNullOrEmpty(viewName))
     {
         return columnLoader.Load();
     }
     return columnLoader.Load(viewName, Owner).ToList();
 }
 /// <summary>
 /// Gets all views.
 /// </summary>
 public IList<DatabaseView> AllViews()
 {
     DataTable dt = _schemaReader.Views();
     List<DatabaseView> views = SchemaConverter.Views(dt);
     var viewFilter = Exclusions.ViewFilter;
     if (viewFilter != null)
     {
         views.RemoveAll(v => viewFilter.Exclude(v.Name));
     }
     //get full datatables for all tables, to minimize database calls
     var columnLoader = new ViewColumnLoader(_schemaReader);
     foreach (DatabaseView v in views)
     {
         v.Columns.AddRange(columnLoader.Load(v.Name, v.SchemaOwner));
     }
     DatabaseSchema.Views.Clear();
     DatabaseSchema.Views.AddRange(views);
     return views;
 }
        /// <summary>
        /// Gets all views.
        /// </summary>
        public IList<DatabaseView> AllViews(CancellationToken ct)
        {
            if (ct.IsCancellationRequested) return DatabaseSchema.Views;
            RaiseReadingProgress(SchemaObjectType.Views);
            DataTable dt = _schemaReader.Views();

            if (ct.IsCancellationRequested) return DatabaseSchema.Views;
            ReaderEventArgs.RaiseEvent(ReaderProgress, this, ProgressType.Processing, SchemaObjectType.Views);
            List<DatabaseView> views = SchemaConverter.Views(dt);
            var viewFilter = Exclusions.ViewFilter;
            if (viewFilter != null)
            {
                views.RemoveAll(v => viewFilter.Exclude(v.Name));
            }

            //get full datatables for all tables, to minimize database calls
            if (ct.IsCancellationRequested) return views;
            RaiseReadingProgress(SchemaObjectType.ViewColumns);

            var columnLoader = new ViewColumnLoader(_schemaReader);
            var count = views.Count;
            for (var index = 0; index < count; index++)
            {
                if (ct.IsCancellationRequested) return views;
                DatabaseView v = views[index];
                ReaderEventArgs.RaiseEvent(ReaderProgress, this, ProgressType.Processing, SchemaObjectType.ViewColumns, v.Name, index, count);
                v.Columns.AddRange(columnLoader.Load(v.Name, v.SchemaOwner));
            }
            DatabaseSchema.Views.Clear();
            DatabaseSchema.Views.AddRange(views);
            return views;
        }