EF代码第4.3命名约定外键(EF Code first 4.3 naming convention

2019-09-16 15:44发布

我有以下实体:

public class User
{
    public int ID {get; set;}

    public int GroupID {get; set;}     // navigation property with 
    public Group Group {get; set;}     // foreign key field

    public Adress Adress {get; set;}   // navigation property only

}

从实体框架生成的表如下所示:

ID
GroupID
Adress_ID

我不喜欢,这对FK列的列命名是不一样的。 我能做到,这两者使用相同的约定或者“群ID,AdressID”或“GROUP_ID,Adress_ID”?

我使用的约定优于配置,并且不希望使用流利的API。

Answer 1:

EF 4.1至4.3不支持创建自定义的约定,所以这是不可能的。 你可以做(​​不流利API)的唯一的事情是可能映射国外财产另一列名:

[Column("Group_ID")]
public int GroupID {get; set;}

然后你有两个FK列与数据库中的下划线。 但是 - 你可以看到 - 你至少需要覆盖与数据注解的约定。

没有下划线定义第二FK列只能用流利的API:

modelBuilder.Entity<User>()
    .HasOptional(u => u.Address)
    .WithMany()
    .Map(x => x.MapKey("AddressID"));


文章来源: EF Code first 4.3 naming convention foreign key