Exemplo n.º 1
0
 private static void AsExpected(ColumnRelationshipDescription columnRelationshipDescription)
 {
     Assert.NotNull(columnRelationshipDescription);
     Assert.NotNull(columnRelationshipDescription.Parent);
     Assert.NotNull(columnRelationshipDescription.Referenced);
     Assert.NotSame(columnRelationshipDescription.Parent, columnRelationshipDescription.Referenced);
 }
Exemplo n.º 2
0
        private static IReadOnlyList <ForeignKeyDescription> ReadForeignKeysForParent(MetaDbContext context, IReadOnlyList <TableDescription> tables, TableDescription parent)
        {
            var foreignKeyGroups = from fkc in context.ForeignKeyColumns
                                   where fkc.ParentObjectId == parent.ObjectId
                                   group new
            {
                fkc.ConstraintColumnId,
                fkc.ParentColumnId,
                fkc.ReferencedColumnId,
            }
            by fkc.ConstraintObjectId;

            var foreignKeys = new List <ForeignKeyDescription>();

            foreach (var foreignKeyColumnGroup in foreignKeyGroups)
            {
                var foreignKey          = context.ForeignKeys.Single(_ => _.ObjectId == foreignKeyColumnGroup.Key);
                var referenced          = tables.Single(_ => _.ObjectId == foreignKey.ReferencedObjectId);
                var columnRelationships = new List <ColumnRelationshipDescription>();
                foreach (var foreignKeyColumn in foreignKeyColumnGroup)
                {
                    var parentColumn       = parent.ColumnDescriptions.Single(_ => _.Order == foreignKeyColumn.ParentColumnId);
                    var referencedColumn   = referenced.ColumnDescriptions.Single(c => c.Order == foreignKeyColumn.ReferencedColumnId);
                    var columnRelationship = new ColumnRelationshipDescription(foreignKeyColumn.ConstraintColumnId)
                    {
                        Parent     = parentColumn,
                        Referenced = referencedColumn,
                    };
                    columnRelationships.Add(columnRelationship);
                }

                var foreignKeyDescription = new ForeignKeyDescription(foreignKey.Name, foreignKey.CreateDate, foreignKey.ModifyDate)
                {
                    ColumnRelationshipDescriptions = columnRelationships,
                };

                foreignKeys.Add(foreignKeyDescription);
            }

            return(foreignKeys);
        }