2

我有以下实体:EF代码第4.3命名约定外键

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。

回答

2

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")); 
+0

'http://stackoverflow.com/questions/18050590/why-does-ef5-create-foreign-keys-with -id-but-recommend-naming-convention-id-wi/18066373?noredirect = 1#18066373'解释了列出现的原因 – 2013-08-05 20:09:16