2012-09-08 8 views
7

In Entity Framework 4.3.1 ho avuto i seguenti modelli, e hanno funzionato bene:Entity Framework 4.3.1 -> 5.0 Eccezione: "EntityType non ha alcuna chiave definita. Definire la chiave per questo 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; } 
} 

Dopo l'aggiornamento a EF 5.0, ottengo l'eccezione seguente quando si tenta di eseguire questa applicazione e accedere alla DbContext associati:

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

Come posso risolvere questo problema? Questa sembra essere una regressione.

risposta

3

Questa eccezione è causata dalla combinazione delle versioni EF.

BaseUser è stato definito in un progetto condiviso che utilizza EF 4.3.1. AppUser era in un progetto usando EF 5.0. Questa Eccezione confusa è il risultato del tentativo di ereditare da un modello in un Progetto che non è stato aggiornato a EF 5.0. La suddivisione del progetto condiviso e l'aggiornamento di quello a cui si fa riferimento qui hanno risolto il problema.

Se altri si imbattono in questo, vale la pena sottolineare che l'aggiornamento è un po 'imbarazzante. Poiché NuGet non sembra notare la necessità di un aggiornamento, consente di installare EF 5.0 su di esso, elenca la nuova versione come 4.4 dopo l'installazione e richiede di includere entrambe le seguenti istruzioni using nelle classi del modello dal alcune annotazioni di dati EF sono state spostate (reindirizzate) e altre no:

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
Problemi correlati