2011-05-05 51 views
1

我有一個主鍵超過3列(1 varchar和2整數)的現有表。 我怎樣才能告訴實體框架使用這個「鑰匙」。 是否有可能使用modelBuilder,屬性還是有其他方法?實體框架代碼優先:共享主鍵

謝謝!

回答

3

用流利的API,您必須使用匿名類型:

modelBuilder.Entity<YourType>() 
      .HasKey(e => new 
       { 
        e.VarChar, 
        e.Int1, 
        e.Int2 
       }); 

其它方式使用數據註釋:

public class YourType 
{ 
    [Key, Column(Order = 0)] 
    public string VarChar { get; set; } 
    [Key, Column(Order = 1)] 
    public int Int1 { get; set; } 
    [Key, Column(Order = 2)] 
    public int Int2 { get; set; } 
} 

在列的兩個場景順序很重要。一旦你嘗試使用DbSet<YourType>.Find,你將不得不以相同的順序提供密鑰。 EF還在內部使用訂單。