Foreign Keys com SMO #1

Objectivo: Determinar o nome da tabela que está a ser referenciada a partir de uma chave externa
Ferramentas: SQL Server Management Objects (SMO)
Principais objectos e propriedades: Table, Table.ForeignKeys, Column, ForeignKey, ForeignKeyColumn
Notas:

  • chave primária e foreign key não composta

 

Código

private static string GetReferencedTableName(Table table, Column column)
{
    Column c2 = new Column();
    bool exists = false;
    string referencedTable = "";
    foreach (ForeignKey ffk in table.ForeignKeys)
    {
        foreach (ForeignKeyColumn fc in ffk.Columns)
        {
            c2 = table.Columns[fc.Name];
            if (c2.ID == column.ID)
            {
                exists = true;
                break;
            }
        }
        if (exists)
        {
            referencedTable += ffk.ReferencedTable;
            break; // not considering composite FK
        }
    }
    return referencedTable;
}

 

por Vitor Silva



Leave a Reply