2010-12-15 92 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