Una manera de acceder a los esquemas de SQL Server utilizando OleDb es mediante la función GetOleDbSchemaTable. Utilizando el parámetro System.Data.OleDb.OleDbSchemaGuid.Foreign_Keys, el acceso a las claves «foráneas» es muy sencilla. Esta función devuelve un DataTable con la información de las «Foreign Keys» de todas las tablas con la siguiente información:
FK_TABLE_NAME
FK_COLUMN_NAME
PK_TABLE_NAME
PK_COLUMN_NAME
De esta manera, podemos saber todas las relaciones de todas las tablas de nuestra base de datos.
Pero con SqlClient, este método no existe, la manera de acceder al esquema, es mediante la tabla «Information_Schema.*». Un forma muy sencilla de obtener la misma tabla es realizando la siguiente consulta:
SELECT ccu.table_name AS FK_TABLE_NAME,
ccu.column_name AS FK_COLUMN_NAME,
rc.constraint_name AS PK_COLUMN_NAME,
ccu2.table_name AS PK_TABLE_NAME
FROM information_schema.constraint_column_usage ccu
JOIN information_schema.referential_constraints rc ON ccu.constraint_name=rc.constraint_name
JOIN information_schema.constraint_column_usage ccu2 ON rc.unique_constraint_name=ccu2.constraint_name