entity framework - net - El tipo de entidad no tiene una clave definida EF6
entity framework code first tutorial español (2)
Aquí está mi código, aunque ya he refinado el atributo clave, pero todavía hay un problema.
public class Contacts
{
[Key]
public int ContactId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
}
El error que recibo es:
El tipo de entidad ''Contactos'' no tiene una clave definida. Defina la clave para este tipo de entidad.
Tipo de entidad: EntitySet ''Contactos'' se basa en el tipo ''Contactos'' que no tiene una clave definida
Si está utilizando EF Code First (no especificado en su pregunta), deberá cambiar el nombre de la propiedad ContactId a ContactsId para que coincida con la convención de ClassName + Id para definir la clave para su tipo de entidad Contactos .
Consulte los primeros convenios del código de MSDN: http://msdn.microsoft.com/en-us/data/jj679962.aspx
Sé que esto ya ha sido respondido de una manera, pero quería publicar un enfoque diferente para quienes se enfrentan a esto.
Este error ocurrió para mí incluso cuando tenía [Key] definido encima de la propiedad que quería designar como la clave principal. El error, que se produjo durante el comando Actualizar-Base de datos, fue causado por mi nombre de la migración (a través de Agregar-Migración) de la misma manera que la entidad que deseaba agregar. Esto se debe a que el comando Add-Migration creó una clase parcial que coincidía con el nombre de la entidad.
Por ejemplo:
public class Contacts
{
[Key]
public int ContactId { get; set; }
public string Name { get; set; }
}
No funcionó cuando ejecuté:
Add-Migration Contacts
Update-Database
porque la firma de la clase de migración se veía como la de abajo, y el cuerpo no contenía ninguna propiedad con el atributo [Key]
public sealed partial class Contacts
Para solucionar esto, eliminé la migración con nombre idéntico y modifiqué el comando Add-Migration:
Add-Migration ContactsTable
Update-Database