2012-09-08 52 views
7

En Entity Framework 4.3.1 que tenían los siguientes modelos, y que funcionó bien:Entity Framework 4.3.1 -> 5.0 Excepción: "EntityType no tiene una clave definida. Defina la clave para este EntityType".

public class BaseUser 
{ 
    [Key] 
    [MaxLength(100)] 
    public string Username { get; set; } 
} 

[Table("AppUser")] // Ensures EF Code First uses Table-per-Type 
public class AppUser : BaseUser 
{ 
    [MaxLength(200)] 
    public string About { get; set; } 
} 

Después de actualizar a 5.0 EF, consigo la excepción siguiente cuando trato de ejecutar esta aplicación y acceder a la DbContext asociada:

EntityType 'AppUser' has no key defined. Define the key for this EntityType. 

¿Cómo puedo resolver este problema? Esto parece ser una regresión.

Respuesta

3

Esta excepción se debe a la mezcla de versiones de EF.

BaseUser se definió en un proyecto compartido que utiliza EF 4.3.1. AppUser estaba en un proyecto usando EF 5.0. Esta Excepción confusa es el resultado de tratar de heredar de un modelo en un Proyecto que no se ha actualizado a EF 5.0. Dividir el proyecto compartido y actualizar el que se hace referencia aquí resolvió el problema.

Si otros se topan con esto, vale la pena señalar que la actualización es un poco incómoda. Dado que NuGet no parece notar la necesidad de una actualización, le permite instalar EF 5.0 en la parte superior, enumera la nueva versión como 4.4 después de la instalación y requiere que incluya las dos siguientes instrucciones de uso en sus clases de Modelo desde algunas de las anotaciones de datos de EF se movieron (redirigieron) y otras no:

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
Cuestiones relacionadas