C# 自引用FK生成技术

C# 自引用FK生成技术,c#,sql,entity-framework,auto-generate,C#,Sql,Entity Framework,Auto Generate,下面的屏幕截图是我的模型中的一个实体(URL)。ParentId字段是自引用FK(指向Url.Id)。您可以在屏幕截图的底部看到此导航 在生成EDMX的SQL和DB中,自引用FK称为FK_URL_Parent: -- Creating foreign key on [ParentId] in table 'Urls' ALTER TABLE [Urls] ADD CONSTRAINT [FK_Urls_Parent] FOREIGN KEY ([ParentId]) REFER

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

在生成EDMX的SQL和DB中,自引用FK称为FK_URL_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;
我的问题是:

  • 为什么EF仅仅从那个FK生成Urls1和Url1?Url1是“FromRole”Urls1的0或1属性。Urls1是“FromRole”URL“ToRole”Urls1。似乎EF正在创建一个与Url表完全相同的导航属性。为什么它会这样做?我能做些什么让它只生成一个所需的导航属性:Urls1吗
  • 好的,所以没有那么重要,但是我可以基于FK名称或DB中的其他内容来控制导航属性的名称吗?我讨厌它把它命名为“Url1”。我更喜欢“父对象”,但不希望每次重新生成模型时都必须在设计器中手动更改它

  • 谢谢。

    它是关系双方的模型。换句话说,其中一个属性将是该条目的
    ParentId
    指向的条目。另一个是
    ParentId
    字段指向此条目的条目。您可以禁用关系属性中的一方,或者重命名它们以使其有意义。例如,
    ParentUrl
    childURL

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


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

    这将是childURL,因为单亲实体有多个子实体。