C# 如何使用数据库优先方法命名外键

C# 如何使用数据库优先方法命名外键,c#,entity-framework,ef-database-first,C#,Entity Framework,Ef Database First,有没有办法改变实体框架的命名约定 例如: 我有两张桌子 Planification -------------- creator_id <fk> guest_id <fk> Profile -------------- profile_id <pk> 我更喜欢比Profile和Profile1更具体的东西,比如Guest和Creator 有没有办法改变命名约定,因为我真的很内疚让它这样做。在您的edmx中,您可以通过单击属性并更改名称来重命名nav属性

有没有办法改变实体框架的命名约定

例如:

我有两张桌子

Planification
--------------
creator_id <fk>
guest_id <fk>


Profile
--------------
profile_id <pk>
我更喜欢比
Profile
Profile1
更具体的东西,比如
Guest
Creator


有没有办法改变命名约定,因为我真的很内疚让它这样做。

在您的edmx中,您可以通过单击属性并更改
名称来重命名nav属性

请注意,如果删除该表并再次从数据库中构建该表,则必须在edmx中重命名该表

如果你对此感到十分恼火。解决这个问题的一种方法是使用带有属性的分部类,该属性为默认命名属性命名

public partial class Planification
{
    public Profile Creator 
    { 
        get{ return this.Profile1; }
        set{
            this.Profile1 = value;
        } 
    }

    public Profile Guest 
    { 
        get{ return this.Profile; }
        set{
            this.Profile = value;
        } 
    }
}

我就是这么想的,不容易。我将参加部分课程。这是个好主意。非常感谢。请务必意识到,如果添加了另一个外键并重新创建了edmx,“Profile1”可能会更改上下文。@是的,但这会使它变得非常危险。如果在某一点上,不再需要外键并将其从表中删除。该外键下面的所有引用都将移动。根据您使用它们的方式,它可能会破坏整个应用程序,甚至不会给出编译错误。不过,您的方法将使代码更改保持在一个位置。@MichaelD我不认为这是“非常危险的”,但如果您更改密钥,则可能会出现问题。在进行更改时,您应该尽到测试应用程序的职责。我认为这个解决方案比重命名edmx中的属性更容易管理,在重新生成表时,这些属性会被硬删除。如果您有更好的解决方案,我洗耳恭听。@Shoe如果您的业务逻辑突然使用另一个外键,而您没有注意到任何构建错误或警告,那么“它可能发生”可能是灾难性的。只是因为其他地方发生了变化。如果有时间,我会编写一个后处理脚本来更新EDMXXML。根据外部列名更改名称。
public partial class Planification
{
    public Profile Creator 
    { 
        get{ return this.Profile1; }
        set{
            this.Profile1 = value;
        } 
    }

    public Profile Guest 
    { 
        get{ return this.Profile; }
        set{
            this.Profile = value;
        } 
    }
}