2012-09-08 3 views
7

In Entity Framework hatte ich die folgenden Modelle, und sie hat gut funktioniert:Entity Framework 4.3.1 -> 5.0 Ausnahme: "EntityType keinen Schlüssel hat definiert Definieren Sie den Schlüssel für diese EntityType.." 4.3.1

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

Nach EF Upgrade 5.0, ich die folgenden Ausnahme erhalten, wenn ich versuche, diese Anwendung auszuführen und die damit verbundenen DbContext zugreifen:

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

Wie behebe ich dieses Problem? Dies scheint eine Regression zu sein.

Antwort

3

Diese Ausnahme wird durch Mischen von EF-Versionen verursacht.

BaseUser wurde in einem gemeinsamen Projekt definiert, die 4.3.1 EF verwendet. AppUser befand sich in einem Projekt mit EF 5.0. Diese verwirrende Ausnahme ist das Ergebnis des Versuchs, von einem Modell in einem Projekt zu erben, das nicht auf EF 5.0 aktualisiert wurde. Durch Aufteilen des freigegebenen Projekts und Aktualisieren des hier genannten Projekts wurde das Problem behoben.

Wenn andere in diese laufen, es ist erwähnenswert, dass Upgrade ein wenig umständlich ist. Da NuGet scheint nicht die Notwendigkeit für ein Upgrade zu bemerken, es lässt Sie EF 5.0 auf es installiert haben, führt die neue Version als 4.4 nach der Installation und erfordert, dass Sie die beiden folgenden using-Anweisungen in Ihrer Modellklassen einzubeziehen, da einige der Daten EF Annotationen wurden (weitergeleitet) bewegt wird, und einige waren nicht:

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
Verwandte Themen