EF 4.1代码优先的复合钥匙

我想弄清楚如何使用EF代码First 4.1 RC的复合键。

目前,我正在使用[Key]数据注释,但我无法指定多个键。

如何指定一个复合键?

这是我的例子:

public class ActivityType { [Key] public int ActivityID { get; set; } [Required(ErrorMessage = "A ActivityName is required")] [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")] public string ActivityName { get; set; } } 

我需要“活动名称”也是一个关键。 当然,我可以对此进行编码,但那不是很好的数据库devise。

您可以使用Key注释标记ActivityIDActivityName属性,也可以使用@taylonr描述的stream畅API。

编辑:

这应该工作 – 用注释定义的组合键需要明确的列顺序:

 public class ActivityType { [Key, Column(Order = 0)] public int ActivityID { get; set; } [Key, Column(Order = 1)] [Required(ErrorMessage = "A ActivityName is required")] [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")] public string ActivityName { get; set; } } 

我们不使用注释,而是重写模型构build器,在这种情况下,您可以执行如下操作:

 modelBuilder.Entity<Activity>().HasKey(a => new { a.ActivityId, a.ActivityName }); 
Interesting Posts