0

在下面的屏幕截图中是我模型中的实体(URL)。ParentId 字段是一个自引用的 FK(指向 Url.Id)。您可以在屏幕截图的底部看到此导航。

替代文字

在我生成 EDMX 的 SQL 和数据库中,自引用 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 是 0 或 1 属性,即“FromRole”Urls1。Urls1 是 'FromRole' Urls 'ToRole' Urls1。似乎 EF 正在制作与 Url 表完全相同的导航属性。为什么它会这样做,我可以做些什么让它只生成一个所需的导航属性:Urls1?
  2. 好的,所以不是那么重要,但是我可以根据 FK 名称或数据库中的其他内容来控制 Navigation 属性的名称吗?我讨厌它把它命名为“Url1”。我更喜欢“父级”,但不想每次重新生成模型时都必须在设计器中手动更改它。

谢谢。

4

1 回答 1

2

它正在建模关系的双方。换句话说,其中一个属性将是该条目的ParentId. 另一个将是其ParentId字段指向该条目的条目。您可以禁用关系属性中的一侧,或重命名它们以使其有意义。比如,例如,ParentUrlChildUrls

我不能 100% 确定如何在不自己打开程序的情况下进入属性关系对话框,我现在不能。我确实知道,当链接被选中时,它会出现在(默认情况下)右下角的属性窗口中。

至于在模型再生过程中以某种方式使这种变化永久存在,我不知道有什么办法做到这一点。希望其他人会知道,因为它也会为我节省很多时间!

于 2010-12-15T23:08:34.037 回答