Ejemplo n.º 1
0
        public IEnumerable <RelationshipDesc <int, int> > ExtractRelationships()
        {
            var script = _scriptsExtractor.ReadFileFromRes(Scripts.Relationships);
            var table  = _engine.ExecuteQuery(script);
            //NOTE: Skip unsuported objects
            var rId         = -1;
            var fromTable   = -1;
            var fromColumns = new List <int>();
            var toTable     = -1;
            var toColumns   = new List <int>();

            foreach (var row in table.Rows.Cast <DataRow>())
            {
                var id           = (int)row["id"];
                var fromTableId  = (int)row["from_table_id"];
                var fromColumnId = (int)row["from_column_id"];
                var toTableId    = (int)row["to_table_id"];
                var toColumnId   = (int)row["to_column_id"];

                if (id != rId)
                {
                    if (rId != -1)
                    {
                        yield return(new RelationshipDesc <int, int>(fromTable, fromColumns.ToArray(), toTable, toColumns.ToArray()));
                    }
                    rId       = id;
                    fromTable = fromTableId;
                    toTable   = toTableId;
                    fromColumns.Clear();
                    toColumns.Clear();
                }
                fromColumns.Add(fromColumnId);
                toColumns.Add(toColumnId);
            }
            if (rId != -1)
            {
                yield return(new RelationshipDesc <int, int>(fromTable, fromColumns.ToArray(), toTable, toColumns.ToArray()));
            }
        }