簡體   English   中英

如何通過查詢識別SQL Server中的1-1,1-M和MN關系?

[英]How can I recognize 1-1,1-M and M-N relationship in SQL Server by query?

我有這樣的查詢

SELECT 
    RC.CONSTRAINT_NAME FKName, 
    KF.TABLE_SCHEMA FKSchema,
    KF.TABLE_NAME FKTable, 
    KF.COLUMN_NAME FKColumn,
    RC.UNIQUE_CONSTRAINT_NAME PKName,
    KP.TABLE_SCHEMA PKSchema,
    KP.TABLE_NAME PKTable, 
    KP.COLUMN_NAME PKColumn, 
    RC.MATCH_OPTION MatchOption, 
    RC.UPDATE_RULE UpdateRule,
    RC.DELETE_RULE DeleteRule
FROM
    [INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS] RC
JOIN 
    [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] KF ON RC.CONSTRAINT_NAME = KF.CONSTRAINT_NAME
JOIN 
    [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] KP ON RC.UNIQUE_CONSTRAINT_NAME = KP.CONSTRAINT_NAME

結果是:

FK_Person_Address   dbo Person  Id  PK_Address  dbo Address Id  SIMPLE  NO ACTION   NO ACTION --[1-1] or [1-M] or [M-N] I need this!

我想將每行1-1或1-M的關系類型識別為具有關系狀態的列。

我需要這個[1-1]或[1-M]或[MN]!

誰能指導我?

編輯:

為什么我問這個問題? 所以我看到一些Visual Studio擴展,例如Reverse poco GeneratorEntity Framework Power Tools Beta 4可以將表反向轉換為C#pocos,因此他們必須知道關系狀態1-1或1-M或MN,以便將導航屬性生成為單個類或類列表並且還創建EntityTypeConfiguration進行映射,以便它們如何從SQL Server表中獲取這些信息? 如果我們對表的關系一無所知,就不能將它們反向轉換為C#類!

對於1-1關系:引用表中有一個具有外鍵約束的唯一關鍵字。

對於M-1關系:在參考表中沒有具有外鍵約束的唯一關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM