Exemple #1
0
        private ViewDefinition GetViewDefinition(string tableName, ViewType?type = null)
        {
            if (type == null)
            {
                type = _lookupIdentifiers.Any(tableName.EndsWith) ? ViewType.Lookup : ViewType.Dimension;
            }

            var viewDefinition = new ViewDefinition(tableName, type.Value);

            viewDefinition.ColumnGroups.Add(new ViewDefinition.PrimaryKey {
                Columns = _analyzer.GetPrimaryKeyColumns(tableName)
            });

            foreach (var relationship in _analyzer.GetForeignKeyRelationships(tableName))
            {
                var keyType = ViewDefinition.ReferenceKeyType.DimensionReference;
                if (type == ViewType.Dimension || type == ViewType.Lookup)
                {
                    keyType = ViewDefinition.ReferenceKeyType.Denormalized;
                }
                else if (_lookupIdentifiers.Any(relationship.PrimaryKeyTable.EndsWith))
                {
                    keyType = ViewDefinition.ReferenceKeyType.LookupReference;
                }

                viewDefinition.ColumnGroups.Add(new ViewDefinition.ReferenceKey
                {
                    Relationship = relationship,
                    KeyType      = keyType,
                    Columns      = keyType == ViewDefinition.ReferenceKeyType.Denormalized
                        ? _analyzer.GetNonKeyColumns(relationship.PrimaryKeyTable)
                        : new List <SchemaAnalyzer.ColumnDefinition>()
                });
            }
            ;

            viewDefinition.ColumnGroups.Add(new ViewDefinition.ColumnGroupDefinition {
                Columns = _analyzer.GetNonKeyColumns(tableName)
            });

            return(viewDefinition);
        }