Exemple #1
0
        private AtomReference ReferencesOthers(Database db, Column column, Table table)
        {
            var indexes = table.ForeignKeys.Cast <ForeignKey>()
                          .ToList();

            var index = indexes.FirstOrDefault(i => i.Columns.Contains(column.Name));

            if (index != null &&
                index.ReferencedTable != table.Name)
            {
                var reference = new AtomReference
                {
                    Name   = index.ReferencedTable,
                    Schema = index.ReferencedTableSchema != table.Schema ? index.ReferencedTableSchema : null
                };

                // find the related column

                Log.Debug("Looking for key {ReferencedKey} {ReferencedTable} {TableName} {ColumnName}",
                          index.ReferencedKey,
                          index.ReferencedTable,
                          table.Name,
                          column.Name);

                var referencedKey =
                    db.Tables.Cast <Table>()
                    .First(i => i.Schema == index.ReferencedTableSchema && i.Name == index.ReferencedTable)
                    .Indexes.Cast <Index>()
                    .First(i => i.Name == index.ReferencedKey)
                    .IndexedColumns.Cast <IndexedColumn>()
                    .FirstOrDefault();

                if (referencedKey != null &&
                    (referencedKey.Name != column.Name))
                {
                    reference.Member = referencedKey.Name;
                }

                return(reference);
            }

            return(null);
        }
Exemple #2
0
 public SearchBySproc(AtomModel atomModel, AtomReference searchBy, IEnumerable <AtomModel> allAtoms)
     : base(atomModel)
 {
     _searchBy = searchBy;
     _allAtoms = allAtoms;
 }