Пример #1
0
        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);
        }