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