Пример #1
0
        public SchemaObject GetSchema(string schemaObjectReferenceName)
        {
            // search the stack from the top and take first value that satisfies unique key
            var aliasedDatabaseObjectReferences = StatementReferences
                                                  .SelectMany(x => x)
                                                  .Where(x => x.HasAlias())
                                                  .Distinct(new KeyEqualityComparer <SchemaObjectReference, string>(x => x.Alias))
                                                  .ToDictionary(k => k.Alias, v => v.Value, StringComparer.InvariantCultureIgnoreCase);

            var directDatabaseObjectReferences = StatementReferences
                                                 .SelectMany(x => x)
                                                 .Where(x => !x.HasAlias())
                                                 .Distinct(new KeyEqualityComparer <SchemaObjectReference, string>(x => $"{x.Alias}.{x.Identifier}"))
                                                 .ToDictionary(k => k.Identifier.Split('.').Last(), v => v.Value, StringComparer.InvariantCultureIgnoreCase);

            SchemaObject databaseObject = null;

            if (aliasedDatabaseObjectReferences.ContainsKey(schemaObjectReferenceName))
            {
                databaseObject = aliasedDatabaseObjectReferences[schemaObjectReferenceName];
            }
            else if (directDatabaseObjectReferences.ContainsKey(schemaObjectReferenceName))
            {
                databaseObject = directDatabaseObjectReferences[schemaObjectReferenceName];
            }

            return(databaseObject);
        }
Пример #2
0
        public static string GetQualifiedIdentfier(this SchemaObject databaseObject)
        {
            var qualifiers = new List <string>()
            {
                databaseObject.Database,
                databaseObject.Schema,
                databaseObject.Identifier
            };

            return(GetQualifiedIdentfier(qualifiers));
        }