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(); }