2015-07-29 3 views
1

Я настраиваю контекст в своем приложении. Они бросают expection:EntityType не имеет определенного ключа, несмотря на использование [Key]

public DbSet<ApplicationUser> ApplicationUsers { get; set; } 
public DbSet<Book> Books { get; set; } 

Это выглядит следующим образом:

BookList.Models.Book: : EntityType 'Book' has no key defined. Define the key  for this EntityType. 
Books: EntityType: EntitySet 'Books' is based on type 'Book' that has no keys defined. 

My Book класс выглядит следующим образом:

public class Book 
{ 
    [Display(Name = "Id:")] 
    [Key] 
    private int BookId { get; set; } 

    [Display(Name = "Title:")] 
    [MaxLength(35)] 
    [Required] 
    private string Title { get; set; } 

    [Display(Name = "Description:")] 
    [MaxLength(300)] 
    private string Description { get; set; } 
} 

Как вы видите, есть [Key] аннотаций. Есть идеи?

+0

Почему ваша собственность BookID частной? Попробуйте установить это свойство как общедоступное. – Joseph

+0

Вот почему. Спасибо за помощь. –

+0

См. Мой обновленный андерсер. – Joseph

ответ

1

Все должно быть дано EntityFramework при использовании отражения для обнаружения экземпляров PropertyInfo, используют только те, которые public.You просто нужно установить BookID собственность общедоступный:

public class Book 
{ 
    [Display(Name = "Id:")] 
    [Key] 
    public int BookId { get; set; } 

    [Display(Name = "Title:")] 
    [MaxLength(35)] 
    [Required] 
    private string Title { get; set; } 

    [Display(Name = "Description:")] 
    [MaxLength(300)] 
    private string Description { get; set; } 
} 
Смежные вопросы