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