7

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

EF 5.0にアップグレードした後、このアプリケーションを実行して関連するDbContextにアクセスしようとすると、次の例外が発生します。

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

この問題を解決するにはどうすればよいですか?これはリグレッションのようです。

4

1 に答える 1

3

この例外は、EFバージョンの混合が原因で発生します。

BaseUserは、EF4.3.1を使用する共有プロジェクトで定義されました。AppUserは、EF5.0を使用するプロジェクトに参加していました。この紛らわしい例外は、EF5.0にアップグレードされていないプロジェクトのモデルから継承しようとした結果です。共有プロジェクトを分割し、ここで参照されているプロジェクトをアップグレードすると、問題が解決しました。

他の人がこれに遭遇した場合、アップグレードは少し厄介であることを指摘する価値があります。NuGetはアップグレードの必要性に気付いていないようであるため、EF 5.0をその上にインストールし、インストール後に新しいバージョンを4.4としてリストし、モデルクラスに次の両方のusingステートメントを含める必要があります。一部のEFデータ注釈は移動(リダイレクト)され、一部は移動されませんでした。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
于 2012-09-09T21:05:38.343 に答える