C# 从链接到多个表的另一个表中的主键获取外键字段

C# 从链接到多个表的另一个表中的主键获取外键字段,c#,asp.net,linq,sql-server-2014,C#,Asp.net,Linq,Sql Server 2014,我的数据库是在SQL Server中设计的&我希望在asp.net、LINQ、C#中获得输出 我有两个表链接到一个表(1:1) 我的问题是我可以得到一个主键链接到哪个表 例如: tbl_文件(ID、日期等) 待定系数(ID、DocID等) tbl_财务(ID、文档ID等) 在链接到哪个表的tbl\u文档中,了解ID的最佳方法是什么 我可以将tbl_文档中的记录添加为'whichTable',并在每一列中写入表名,每次我要搜索集“if”并选中'whichTable' 有更好的方法吗 谢谢,很抱

我的数据库是在SQL Server中设计的&我希望在asp.net、LINQ、C#中获得输出

我有两个表链接到一个表(1:1)

我的问题是我可以得到一个主键链接到哪个表

例如:

  • tbl_文件(ID、日期等)
  • 待定系数(ID、DocID等)
  • tbl_财务(ID、文档ID等)
在链接到哪个表的
tbl\u文档中,了解
ID
的最佳方法是什么

我可以将
tbl_文档中的记录添加为'whichTable',并在每一列中写入表名,每次我要搜索集“if”并选中'whichTable'

有更好的方法吗


谢谢,很抱歉我的英语不好:)

默认情况下,您只能获取对父表具有外键约束的所有表:

select  object_name(f.referenced_object_id) pk_table, c1.name pk_column_name,
  object_name(f.parent_object_id) fk_table, c2.name fk_column_name
from
sys.foreign_keys f
join sys.columns c1 on c1.object_id = f.referenced_object_id
join sys.columns c2 on c2.object_id = f.parent_object_id 
join sys.foreign_key_columns k 
  on (k.constraint_object_id = f.object_id 
    and c2.column_id = k.parent_column_id
    and c1.column_id = k.referenced_column_id )
where object_name(f.referenced_object_id) ='tbl_Document'

对于父表中的每个特定行,都没有这样的附加信息。这将是一个重复的信息(因为您可以通过在每个子表中搜索来找出它)。因此,正如您所提到的,您可以将子表名存储在附加列中,然后作为一个选项,动态构造sql以查询子行。

您已经在数据库中设计了一个数据库。很可能这是一种反模式。考虑不要这样做,而是使用引用完整性和传统FK。relationships@Jamiec谢谢,但我想做的是:我有一些表,如bill、finance等,希望为它们设置相同的文档编号(每次添加1)。我认为更好的方法是创建文档表,因为父表和其他表都是子表。(泛化是其中的一部分)从下到上很容易找到文档编号。但我的问题是我想从上到下查找,用文档号直接转到链接列。我可以这样做吗?thanx,它的意思是我应该把所有列连接在一起,然后搜索我的键。为什么没有代码将我指向链接列?:)刚刚意识到你真正想要的:)更新了答案