public Relationship GetRelationship(string relationshipName) { if (!relationshipName.Contains(".")) { return(PrivateGetRelationship(relationshipName)); } SchemaObject finalSchemaObject = GetFinalSchemaObject(relationshipName); return(finalSchemaObject.PrivateGetRelationship(relationshipName.Substring(relationshipName.LastIndexOf(".") + 1))); }
private SchemaObject GetFinalSchemaObject(string path) { string[] parts = path.Split('.'); SchemaObject lastSchemaObject = this; for (int i = 1; i < parts.Length - 1; i++) { Relationship relationship = lastSchemaObject.PrivateGetRelationship(parts[i]); if (relationship == null) { throw new KeyNotFoundException($"Could not find relationship {parts[i]} on Data Object {lastSchemaObject.SchemaName}.{lastSchemaObject.ObjectName}"); } lastSchemaObject = Schema.GetSchemaObject(relationship.RelatedObjectType); } return(lastSchemaObject); }