Составной ключ с кодом EF 4.1 сначала


Я пытаюсь выяснить, как иметь составной ключ, используя EF code 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; }

}

Мне нужно, чтобы" ActivityName " также был ключом. Конечно, я могу кодировать вокруг этого, но это не хороший дизайн базы данных.

2 104

2 ответа:

вы можете отметить оба ActivityID и ActivityName свойства Key аннотация или вы можете использовать fluent API, как описано @taylonr.

Edit:

это должно работать - составной ключ определяется с аннотациями требует явного порядка столбцов:

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; }

}

мы не используем аннотации, вместо этого мы переопределяем модели строителя, и в этом случае вы можете сделать что-то вроде:

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