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;
}
}
}