2012-09-08 6 views
7

나는 다음과 같은 모델을 가지고, 그들은 괜찮 았는데 :Entity Framework 4.3.1 -> 5.0 예외 : "EntityType에 정의 된 키가 없습니다.이 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; } 
} 

나는이 응용 프로그램을 실행하고 관련 DbContext에 액세스하려고 할 때, 나는 예외를 다음 얻을 EF 5.0로 업그레이드 한 후 :

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 클래스에 다음 using 문을 모두 포함시켜야합니다. 일부 EF 데이터 특수 효과가 이동 (리디렉션)되었으며 일부는 아니 었습니다.

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema;