property hasforeignkey framework foreign first data code ef-code-first composite-key entity-framework-4.1

ef-code-first - first - entity framework hasforeignkey



Clave compuesta con EF 4.1 Código primero (2)

No utilizamos las anotaciones, en su lugar, reemplazamos el generador de modelos, en cuyo caso puede hacer algo como:

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

Estoy intentando descubrir cómo tener una clave compuesta usando el código EF First 4.1 RC.

Actualmente, estoy usando la anotación de datos [clave], pero no puedo especificar más de una clave.

¿cómo se especificaría una clave compuesta?

Aquí está mi ejemplo:

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

Necesito que "ActivityName" también sea una clave. Claro, puedo codificar esto, pero eso no es un buen diseño de base de datos.


Puede marcar las propiedades de ActivityID y ActivityName con la anotación de Key o puede usar la API con fluidez tal como lo describe @taylonr.

Editar:

Esto debería funcionar: la clave compuesta definida con anotaciones requiere un orden explícito de columnas:

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