Esempio n. 1
0
        private static KeyValuePair <OracleConstraint, OracleObjectIdentifier> MapConstraintWithReferenceIdentifier(IDataRecord reader, IDictionary <OracleObjectIdentifier, OracleSchemaObject> allObjects)
        {
            var remoteConstraintIdentifier = OracleObjectIdentifier.Empty;
            var owner = QualifyStringObject(reader["OWNER"]);
            var ownerObjectFullyQualifiedName = OracleObjectIdentifier.Create(owner, QualifyStringObject(reader["TABLE_NAME"]));

            if (!allObjects.TryGetValue(ownerObjectFullyQualifiedName, out OracleSchemaObject ownerObject))
            {
                return(new KeyValuePair <OracleConstraint, OracleObjectIdentifier>(null, remoteConstraintIdentifier));
            }

            var rely       = OracleReaderValueConvert.ToString(reader["RELY"]);
            var constraint = OracleObjectFactory.CreateConstraint((string)reader["CONSTRAINT_TYPE"], owner, QualifyStringObject(reader["CONSTRAINT_NAME"]), (string)reader["STATUS"] == "ENABLED", (string)reader["VALIDATED"] == "VALIDATED", (string)reader["DEFERRABLE"] == "DEFERRABLE", rely == "RELY");
            var dataObject = (OracleDataObject)ownerObject;

            constraint.OwnerObject = dataObject;
            dataObject.Constraints.Add(constraint);

            if (constraint is OracleReferenceConstraint referenceConstraint)
            {
                var cascadeAction = DeleteRule.None;
                switch ((string)reader["DELETE_RULE"])
                {
                case "CASCADE":
                    cascadeAction = DeleteRule.Cascade;
                    break;

                case "SET NULL":
                    cascadeAction = DeleteRule.SetNull;
                    break;

                case "NO ACTION":
                    break;
                }

                referenceConstraint.DeleteRule = cascadeAction;
                remoteConstraintIdentifier     = OracleObjectIdentifier.Create(QualifyStringObject(reader["R_OWNER"]), QualifyStringObject(reader["R_CONSTRAINT_NAME"]));
            }

            return(new KeyValuePair <OracleConstraint, OracleObjectIdentifier>(constraint, remoteConstraintIdentifier));
        }
Esempio n. 2
0
        private static object MapSchemaObject(IDataRecord reader, IDictionary <OracleObjectIdentifier, OracleSchemaObject> allObjects)
        {
            var objectTypeIdentifer = OracleObjectIdentifier.Create(QualifyStringObject(reader["OWNER"]), QualifyStringObject(reader["OBJECT_NAME"]));
            var objectType          = (string)reader["OBJECT_TYPE"];
            var created             = (DateTime)reader["CREATED"];
            var isValid             = (string)reader["STATUS"] == "VALID";
            var lastDdl             = (DateTime)reader["LAST_DDL_TIME"];
            var isTemporary         = String.Equals((string)reader["TEMPORARY"], "Y");

            OracleSchemaObject schemaObject = null;

            switch (objectType)
            {
            case OracleObjectType.Table:
                if (allObjects.TryGetValue(objectTypeIdentifer, out schemaObject))
                {
                    goto case OracleObjectType.MaterializedView;
                }

                goto default;

            case OracleObjectType.MaterializedView:
            case OracleObjectType.Type:
                if (schemaObject == null && allObjects.TryGetValue(objectTypeIdentifer, out schemaObject))
                {
                    schemaObject.Created     = created;
                    schemaObject.IsTemporary = isTemporary;
                    schemaObject.IsValid     = isValid;
                    schemaObject.LastDdl     = lastDdl;
                }
                break;

            default:
                schemaObject = OracleObjectFactory.CreateSchemaObjectMetadata(objectType, objectTypeIdentifer.NormalizedOwner, objectTypeIdentifer.NormalizedName, isValid, created, lastDdl, isTemporary);
                AddObjectToDictionary(allObjects, schemaObject, schemaObject.Type);
                break;
            }

            return(schemaObject);
        }