2013-12-20 61 views
0

我首先使用EF 6代碼。我有一個數據庫設計中的下列情況:與1對1共享主鍵關係的問題

我有3個表,即

  • 學生
  • 聯繫

通過代碼首先流利的API我已經建立了一個單-directional 1對1之間的映射如下:

  • 學生 - 聯繫
  • 人 - 聯繫

當我建立學生之間的關係 - 聯繫一切都完美的工作。但是,當我加入人之間的關係,旁邊即 - 聯繫然後我得到了以下異常:

操作失敗,因爲索引或統計名爲「IX_Id」已經存在於表「dbo.Contacts」。

現在我知道,因爲共享主鍵的概念的聯繫主鍵的的FK學生,然後當我添加了新的關係,即人之間 - 聯繫力的EF創建新的FK爲,並且因爲具有相同名稱的FK已經存在而導致該異常。

我想知道是否有任何解決這種情況的解決方法?

我必須保持接觸表分開,因爲很多其他的表在我的數據庫像學生,個人,公司等具有存儲在接觸桌子上有聯繫信息。所以我還必須創建很多其他1對1的關係。

+1

你可以發佈架構定義嗎? – Woot4Moo

+0

也許http://stackoverflow.com/a/5700825/880990有幫助。 –

回答

0

不知道實體框架或代碼首先,我認爲這個問題將是你的表需要是這樣的:

Contact: 
    contact_id primary_key 

Person: 
    person_id primary_key 
    contact_id foreign_key 

Student: 
    student_id primary_key 
    contact_id foreign_key 

基於錯誤信息會出現在你正在嘗試做這樣的事情這個:

Contact: 
     contact_id primary_key 
     person_student_id foreign_key -- either to Person or Student 
    Person: 
     person_id primary_key 
     contact_id foreign_key 

    Student: 
     student_id primary_key 
     contact_id foreign_key