EF Code第4.3条命名约定外键

时间:2012-04-21 11:26:17

标签: .net entity-framework ef-code-first ef-migrations

我有以下实体:

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列的列命名不一样。我是否可以实现使用相同的约定“GroupID,AdressID”或“Group_ID,Adress_ID”?

我使用约定优于配置而不想使用Fluent API。

1 个答案:

答案 0 :(得分:2)

EF 4.1到4.3不支持创建自定义约定,因此无法实现。您可以做的唯一事情(没有Fluent API)可能是将外部属性映射到另一个列名:

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

然后在数据库中有两个带下划线的FK列。但是 - 正如您所看到的 - 您至少需要使用数据注释覆盖约定。

只能使用Fluent API定义第二个没有下划线的FK列:

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