-->

How to get the table a foreign key refers to

2019-02-17 06:34发布

问题:

I have an small question I didn't found an answer yet: how do I get in c# and using Microsoft.SqlServer.Smo the table a foreign key column is referring to?

foreach (Column column in currentTable.Columns) {
        if (column.IsForeignKey) {
                 //GET TABLE FOREIGN KEY REFERS TO
          }
   }

回答1:

You should start from the table itself, and enumerate all of it's foreign keys. Sample code:

foreach (ForeignKey key in currentTable.ForeignKeys)
{
    foreach (ForeignKeyColumn column in key.Columns)
    {
        Console.WriteLine("Column: {0} is a foreign key to Table: {1}",column.Name,key.ReferencedTable);
    }
}

EDIT: Small change. In second foreach loop use foreach (ForeignKeyColumn column in key.Columns) (I had it foreach (Column column in key.Columns) before, and that's wrong. My mistake.)



回答2:

use SMO dll

http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.table.aspx