SQL Server检测一对一或一对多

SQL Server检测一对一或一对多,sql,.net,sql-server,Sql,.net,Sql Server,我需要检测外键是1-1还是1-many。如何在SQL Server中执行此操作 我的用例是扩展PetaPoco,这样它就有了额外的计算字段,这些字段指向相应的外键记录。问题是我的表既有1-1也有1-many。我需要检测,以便附加字段可以是poco或列表 SELECT tab1.name as [source_table], col1.name AS [source_column], tab2.name AS [referenced_table], col2.name AS [r

我需要检测外键是1-1还是1-many。如何在SQL Server中执行此操作

我的用例是扩展PetaPoco,这样它就有了额外的计算字段,这些字段指向相应的外键记录。问题是我的表既有1-1也有1-many。我需要检测,以便附加字段可以是poco或列表

    SELECT tab1.name as [source_table],
col1.name AS [source_column],
 tab2.name AS [referenced_table],
    col2.name AS [referenced_column]
FROM sys.foreign_key_columns fkc
INNER JOIN sys.objects obj
    ON obj.object_id = fkc.constraint_object_id
INNER JOIN sys.tables tab1
    ON tab1.object_id = fkc.parent_object_id
INNER JOIN sys.columns col1
    ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN sys.tables tab2
    ON tab2.object_id = fkc.referenced_object_id
INNER JOIN sys.columns col2
    ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id

除非外键上有唯一的约束,或者外键也是主键或唯一索引,否则我认为没有可靠的方法。