2012-09-08 5 views
7

は、Entity Frameworkの4.3.1で、私は次のモデルを持っていた、そして、彼らはうまく働い:Entity Framework 4.3.1 - > 5.0 Exception: "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とリストアップし、次のusingステートメントをModelクラスに含める必要があります。 EFデータアノテーションの一部が移動(リダイレクト)され、一部が移動していないものがありました:

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
関連する問題