public override void GetTables(Common.Entities.MetaDataSchema.Project project)
 {
     foreach (Entities.MetaDataSchema.Database dbase in project.Databases)
     {
         System.Data.DataTable tables         = new DataTable();
         System.Data.DataTable sqlServerTable = new DataTable();
         tables.Load(project.ExtractorManager.SelectStatement("Select * From " + dbase.Name + ".INFORMATION_SCHEMA.TABLES Where Table_Type = '" + Resources.DataStructure.TableType + "'"), LoadOption.OverwriteChanges);
         sqlServerTable.Load(project.ExtractorManager.SelectStatement("Select * From " + dbase.Name + ".sys.all_objects Where Type_Desc = 'user_table'"), LoadOption.OverwriteChanges);
         OnStartLoading(new Common.Events.LoadingEventArgs(dbase.Name, "Tables", "Database"));
         dbase.Tables.Clear();
         foreach (DataRow row in tables.Rows)
         {
             Entities.MetaDataSchema.Table tbl = new Common.Entities.MetaDataSchema.Table();
             tbl.ParentDatabase = dbase;
             tbl.Schema         = row["Table_Schema"].ToString();
             tbl.Name           = row["Table_Name"].ToString();
             DataRow[] sqlRows = sqlServerTable.Select("[name] = '" + tbl.Name + "'");
             if (sqlRows.Length > 0)
             {
                 tbl.TableID = sqlRows[0]["object_id"].ToString();
             }
             if (project.CheckHasData)
             {
                 tbl.DataCount = CountRecordsInTable(tbl);
                 tbl.HasData   = tbl.DataCount > 0;
             }
             dbase.Tables.Add(tbl);
         }
         OnEndLoading(new Common.Events.LoadingEventArgs(dbase.Name, "Tables", "Database"));
         tables.Dispose();
     }
     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();
        }
        public override void GetFunctions(Common.Entities.MetaDataSchema.Project project)
        {
            foreach (Entities.MetaDataSchema.Database database in project.Databases)
            {
                System.Data.DataTable functions      = new DataTable();
                System.Data.DataTable sqlServerTable = new DataTable();
                functions.Load(database.ParentProject.ExtractorManager.SelectStatement("Select * From " + database.Name + ".INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE = 'FUNCTION'"), LoadOption.OverwriteChanges);
                sqlServerTable.Load(database.ParentProject.ExtractorManager.SelectStatement("Select * From " + database.Name + ".sys.all_objects Where [Type] = 'FN'"), LoadOption.OverwriteChanges);
                OnStartLoading(new Common.Events.LoadingEventArgs(database.Name, "Functions", "Database"));
                database.Functions.Clear();
                foreach (DataRow row in functions.Rows)
                {
                    Entities.MetaDataSchema.Function function = new Common.Entities.MetaDataSchema.Function();

                    function.ParentDatabase = database;
                    function.Schema         = row["Routine_Schema"].ToString();
                    function.Name           = row["Routine_Name"].ToString();
                    DataRow[] sqlRows = sqlServerTable.Select("[name] = '" + function.Name + "'");
                    if (sqlRows.Length > 0)
                    {
                        function.FunctionId = sqlRows[0]["object_id"].ToString();
                    }
                    //GetColumns(view);
                    database.Functions.Add(function);
                }
                OnEndLoading(new Common.Events.LoadingEventArgs(database.Name, "Functions", "Database"));
                functions.Dispose();
            }
            GC.Collect();
        }
 public override void GetDatabases(Common.Entities.MetaDataSchema.Project project)
 {
     System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(project.ExtractorManager.ConnectionString);
     conn.Open();
     Microsoft.SqlServer.Management.Common.ServerConnection connection = new Microsoft.SqlServer.Management.Common.ServerConnection(conn);
     Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(connection);
     project.Databases.Clear();
     foreach (Microsoft.SqlServer.Management.Smo.Database database in server.Databases)
     {
         Entities.MetaDataSchema.Database db = new Common.Entities.MetaDataSchema.Database();
         db.Name          = database.Name;
         db.ParentProject = project;
         project.Databases.Add(db);
         project.AddDatabaseNode(project.SchemaDataset.Schema, db.GuidId, "", db.Name, db.Name);
     }
 }
 public override void GetTableRelations(Common.Entities.MetaDataSchema.Project project)
 {
     throw new NotImplementedException();
 }