2012-09-08 49 views
7

在實體框架4.3.1,我有以下型號,它們工作得很好:實體框架4.3.1 - > 5.0例外:「EntityType沒有定義密鑰,請爲此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; } 
} 

升級到EF 5.0,我得到下面的異常,當我嘗試運行該應用程序並訪問相關的DbContext後:

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

如何解決此問題?這似乎是一種迴歸。

回答

3

此異常是由混合EF版本引起的。

BaseUser在使用EF 4.3.1的共享項目中定義。 AppUser在使用EF 5.0的項目中。這個令人困惑的異常是嘗試從尚未升級到EF 5.0的項目中的模型繼承的結果。拆分共享項目並升級這裏引用的項目解決了這個問題。

如果其他人遇到這個問題,值得指出升級有點尷尬。由於NuGet似乎沒有注意到需要升級,因此它可以讓您在其上安裝EF 5.0,在安裝後將新版本列爲4.4,並且要求您在Model類中包含以下兩個使用語句某些EF數據註釋被移動(重定向),有些不是:

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
相關問題