2

我有以下实体:

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。

4

1 回答 1

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"));
于 2012-04-21T11:40:20.553 回答