2010-12-15 64 views
0

下面的截圖是我的模型中的一個實體(URL)。 ParentId字段是一個自引用的FK(指向Url.Id)。你可以在屏幕截圖的底部看到這個導航。FK自我參照生成

alt text

在我的SQL和我的數據庫,這是我從產生EDMX,自引用FK被稱爲FK_Urls_Parent:

-- Creating foreign key on [ParentId] in table 'Urls' 
ALTER TABLE [Urls] 
ADD CONSTRAINT [FK_Urls_Parent] 
    FOREIGN KEY ([ParentId]) 
    REFERENCES [Urls] 
     ([Id]) 
    ON DELETE NO ACTION ON UPDATE NO ACTION; 

我的問題是:

  1. 爲什麼EF是否僅從該FK生成Urls1和Url1? Url1是'FromRole'Urls1的0或1屬性。 Urls1是'FromRole'Urls'ToRole'Urls1。 EF似乎在製作一個與Url表完全相同的導航屬性。爲什麼它會這樣做,我可以做些什麼來讓它產生一個所需的導航屬性:Urls1?
  2. 好吧,不那麼重要,但我可以根據FK名稱或DB中的某些內容控制導航屬性的名稱嗎?我討厭它將它命名爲'Url1'。我更喜歡'Parent',但不希望每次重新生成模型時都必須在設計器中手動更改它。

謝謝。

回答

2

這是建模關係的兩面。換句話說,其中一個屬性將是該條目的ParentId所指向的條目。另一個將是ParentId字段指向此條目的條目。您可以在關係屬性中禁用一側,或重新命名它們以使其合理。例如,ParentUrlChildUrls

我不是100%確定如何在沒有打開程序的情況下進入屬性關係對話框,我現在不能。我知道,在鏈接被選中時,它出現在(默認情況下)右下角的屬性窗口中。

至於在整個模型再生過程中以某種方式永久保持這種變化,我知道沒有辦法做到這一點。希望別人會知道,因爲它會爲我節省很多時間!

+1

這將是ChildUrls,因爲單個父實體有多個孩子。 – 2010-12-15 23:12:50

+0

@Hightechrider當然。固定。 – jdmichal 2010-12-15 23:14:26

+0

非常感謝您解釋! – Chad 2010-12-16 06:23:02