private List <DbSchemaObject> GetModules(DatabaseConnectionInfo connectionInfo, SqlCommand getModulesCommand) { List <DbSchemaObject> objects = new List <DbSchemaObject>(); using (SqlConnection conn = new SqlConnection(connectionInfo.ConnectionString)) { conn.Open(); //Get tables getModulesCommand.Connection = conn; using (var reader = getModulesCommand.ExecuteReader()) { var fullNamePos = reader.GetOrdinal("fullName"); var namePos = reader.GetOrdinal("name"); var schemaNamePos = reader.GetOrdinal("schemaName"); var typePos = reader.GetOrdinal("type"); var definitionPos = reader.GetOrdinal("definition"); while (reader.Read()) { var sqlServerType = reader.GetString(typePos).Trim(); DbSchemaObject dbObject = NewObjectOfType(sqlServerType); dbObject.Name = reader.GetString(namePos); dbObject.SchemaName = reader.GetString(schemaNamePos); dbObject.Definition = reader.GetString(definitionPos).Trim(); objects.Add(dbObject); } } return(objects); } }
private DbSchemaObject ParseSchemaObject(FileInfo file) { DbSchemaObject schemaObject = null; var name = System.IO.Path.GetFileNameWithoutExtension(file.FullName); var nameparts = name.Split('_'); var objectType = (ESchemaObjectType)Enum.Parse(typeof(ESchemaObjectType), nameparts[0]); switch (objectType) { case ESchemaObjectType.Table: schemaObject = new DbTable(); break; case ESchemaObjectType.View: schemaObject = new DbView(); break; case ESchemaObjectType.StoredProcedure: schemaObject = new DbStoredProc(); break; case ESchemaObjectType.ScalarFunction: schemaObject = new DbScalarFunction(); break; case ESchemaObjectType.TableFunction: schemaObject = new DbTableFunction(); break; case ESchemaObjectType.Trigger: schemaObject = new DbTrigger(); break; case ESchemaObjectType.PrimaryKey: schemaObject = new DbPrimaryKey(); break; case ESchemaObjectType.ForeignKey: schemaObject = new DbForeignKey(); break; default: throw new ArgumentOutOfRangeException(); } if (schemaObject == null) { throw new Exception("Unable to identify object"); } var objectParts = nameparts[1].Split('.'); if (objectParts.Length != 2) { throw new Exception($"Problem with name {nameparts[1]}"); } schemaObject.SchemaName = objectParts[0]; schemaObject.Name = objectParts[1]; schemaObject.Definition = file.ReadAllText(); return(schemaObject); }