我有以下实体:
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。
答案 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"));