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