2013-10-10 1 views
1

저는 가계를 관리하기 위해 매우 간단한 MVC 애플리케이션을 만들고 있습니다. 이전에는 항상 MVC 모델 생성기 (GUI)에서 데이터 모델을 만들거나 이미 만들어진 SQL 테이블을 가져올 것입니다.키 속성이 있음에도 키 정의 오류가 없습니다.

이번에는 코드 첫 번째 접근 방식을 사용하고 싶었습니다.

본인은 당신에게 법인의 예를 줄 것이다 :

public class Expense { 

    [Key] 
    public int ExpenseId; 

    public double ExpenseValue; 
    public DateTime ExpenseDate; 
    public string ExpenseDescription; 

    public ExpenseType ExpenseType; 
    public Currency ExpenseCurrency; 

    public List<ExpenseUser> Users; 

} 

그리고 내 DbContext 파생 된 개체 :

public class HawsContext : DbContext { 

    public DbSet<Expense> Expenses { get; set; } 
    public DbSet<ExpenseType> ExpenseTypes { get; set; } 
    public DbSet<ExpenseUser> ExpenseUsers { get; set; } 

    public ExpenseUser GetUserByUserName(string userName) { 
     return ExpenseUsers.Where(u => u.UserName == userName).FirstOrDefault(); 
    } 

} 

나는 다음과 같은 오류가 나타납니다 객체 인스턴스화 할 때마다 :

One or more validation errors were detected during model generation:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'Expense' has no key defined. Define the key for this EntityType. \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'ExpenseType' has no key defined. Define the key for this EntityType. \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'ExpenseUser' has no key defined. Define the key for this EntityType. \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'Expenses' is based on type 'Expense' that has no keys defined. \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'ExpenseTypes' is based on type 'ExpenseType' that has no keys defined. \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'ExpenseUsers' is based on type 'ExpenseUser' that has no keys defined.

내가 뭘 잘못하고 있니? 모든 엔티티에는 [Key]가 각각의 키 앞에 있으며, 모든 것은 오류나 경고없이 컴파일됩니다. 문맥을 인스턴스화 한 후에는 작동하지 않습니다. 실제로 생성 될 때 (실제로 SQL 테이블이 실제로 생성되지는 않았습니다)

+0

오류에서 세 가지 개체 모두이 문제가있는 것으로 보입니다 ... 비용뿐만이 아닙니다. – idipous

답변

3

Google 검색에서 문제가 드러났습니다. Key 속성을 만들어야합니다.

+0

감사합니다. 접근자는 실제로 범인이었습니다. –

+0

컨트롤러를 추가하기 전에 [Key] 속성을 추가하고 다시 컴파일 한 후에 만 ​​작동합니다. –