public override void GetViews(Common.Entities.MetaDataSchema.Project project)
        {
            foreach (Entities.MetaDataSchema.Database database in project.Databases)
            {
                System.Data.DataTable views          = new DataTable();
                System.Data.DataTable sqlServerTable = new DataTable();
                views.Load(database.ParentProject.ExtractorManager.SelectStatement("Select * From " + database.Name + ".INFORMATION_SCHEMA.VIEWS Order By Table_Name"), LoadOption.OverwriteChanges);
                sqlServerTable.Load(database.ParentProject.ExtractorManager.SelectStatement("Select * From " + database.Name + ".sys.all_objects Where Type_Desc = 'VIEW'"), LoadOption.OverwriteChanges);
                OnStartLoading(new Common.Events.LoadingEventArgs(database.Name, "Views", "Database"));
                database.Views.Clear();
                foreach (DataRow row in views.Rows)
                {
                    Entities.MetaDataSchema.View view = new Common.Entities.MetaDataSchema.View();

                    view.ParentDatabase = database;
                    view.Schema         = row["Table_Schema"].ToString();
                    view.Name           = row["Table_Name"].ToString();
                    DataRow[] sqlRows = sqlServerTable.Select("[name] = '" + view.Name + "'");
                    if (sqlRows.Length > 0)
                    {
                        view.ViewID = sqlRows[0]["object_id"].ToString();
                    }
                    //GetColumns(view);
                    database.Views.Add(view);
                }
                OnEndLoading(new Common.Events.LoadingEventArgs(database.Name, "Views", "Database"));
                views.Dispose();
            }
            GC.Collect();
        }
        public override void GetColumns(Common.Entities.MetaDataSchema.View view)
        {
            System.Data.DataTable views = new DataTable();
            string query = String.Format("select {0}.sys.all_columns.*,{0}.sys.types.name as typename From {0}.sys.all_columns inner join {0}.sys.types on {0}.sys.all_columns.system_type_id = {0}.sys.types.system_type_id where object_id = {1}", view.ParentDatabase.Name, view.ViewID);

            views.Load(view.ParentDatabase.ParentProject.ExtractorManager.SelectStatement(query), LoadOption.OverwriteChanges);
            OnStartLoading(new Common.Events.LoadingEventArgs(view.Name, "Columns", "View"));
            view.Columns.Clear();
            foreach (DataRow row in views.Rows)
            {
                Entities.MetaDataSchema.Column col = new Common.Entities.MetaDataSchema.Column();
                col.ParentView      = view;
                col.Name            = row["name"].ToString();
                col.OrdinalPosition = Convert.ToInt32(row["column_id"]);
                col.Precision       = Convert.ToInt32(row["precision"]);
                col.Scale           = Convert.ToInt32(row["scale"]);
                if (row["is_nullable"].ToString().ToLower() == "yes" || row["is_nullable"].ToString().ToLower() == "1" || row["is_nullable"].ToString().ToLower() == "true")
                {
                    col.AllowNull = true;
                }
                else
                {
                    col.AllowNull = false;
                }
                col.ColumnDataType.SQLType = row["typename"].ToString();
                if (row["max_length"] != DBNull.Value)
                {
                    col.Length = Convert.ToInt32(row["max_length"]) / 2;
                }
                col.IsIdentity = Convert.ToBoolean(row["is_identity"]);
                col.IsComputed = Convert.ToBoolean(row["is_computed"]);
                col.ColumnId   = row["column_id"].ToString();
                view.Columns.Add(col);
            }
            OnEndLoading(new Common.Events.LoadingEventArgs(view.Name, "Columns", "View"));
            GC.Collect();
        }
        public override void GetViews(Common.Entities.MetaDataSchema.Project project)
        {
            foreach (Entities.MetaDataSchema.Database database in project.Databases)
            {
                System.Data.DataTable views = new DataTable();
                System.Data.DataTable sqlServerTable = new DataTable();
                views.Load(database.ParentProject.ExtractorManager.SelectStatement("Select * From " + database.Name + ".INFORMATION_SCHEMA.VIEWS Order By Table_Name"), LoadOption.OverwriteChanges);
                sqlServerTable.Load(database.ParentProject.ExtractorManager.SelectStatement("Select * From " + database.Name + ".sys.all_objects Where Type_Desc = 'VIEW'"), LoadOption.OverwriteChanges);
                OnStartLoading(new Common.Events.LoadingEventArgs(database.Name, "Views","Database"));
                database.Views.Clear();
                foreach (DataRow row in views.Rows)
                {
                    Entities.MetaDataSchema.View view = new Common.Entities.MetaDataSchema.View();

                    view.ParentDatabase = database;
                    view.Schema = row["Table_Schema"].ToString();
                    view.Name = row["Table_Name"].ToString();
                    DataRow[] sqlRows = sqlServerTable.Select("[name] = '" + view.Name + "'");
                    if (sqlRows.Length > 0)
                    {
                        view.ViewID = sqlRows[0]["object_id"].ToString();
                    }
                    //GetColumns(view);
                    database.Views.Add(view);
                }
                OnEndLoading(new Common.Events.LoadingEventArgs(database.Name, "Views","Database"));
                views.Dispose();
            }
            GC.Collect();
        }