我是MVC的新手,我正在遵循一个指南,该指南首先在Internet上创建具有代码和个人用户帐户身份验证的MVC项目。但是当我将模型更改为多对多关系时,我得到了
MyFirstASP_MVC_API.Models.BookAuthor::EntityType'BookAuthor'没有定义键。定义此EntityType的键。 BookAuthors:EntityType:EntitySet'BookAuthors'基于类型'BookAuthor',没有定义键。
这是我的课程
public class Author
{
public int Id { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
[StringLength(1000)]
public string Description { get; set; }
public bool IsActive { get; set; }
public ICollection<BookAuthor> BookAuthors { get; set; }
}
public class Book
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
[Required]
[Index(IsUnique = true)]
[StringLength(20)]
public string ISBN { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
public Nullable<DateTime> CreatedDate { get; set; }
public Nullable<DateTime> ModifiedDate { get; set; }
public bool IsActive { get; set; }
public ICollection<BookAuthor> BookAuthors { get; set; }
public ICollection<BookCategory> BookCategories { get; set; }
public Publisher Publisher { get; set; }
public int PublisherId { get; set; }
}
public class BookAuthor
{
public int BookId { get; set; }
public Book Book { get; set; }
public int AuthorId { get; set; }
public Author Author { get; set; }
}
我使用了IdentityModel.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public DbSet<Book> Books { get; set; }
public DbSet<Author> Authors { get; set; }
public DbSet<Publisher> Publishers { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<BookCategory> BookCategories { get; set; }
public DbSet<BookAuthor> BookAuthors { get; set; }
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
我读过一些有关解决问题的文章,他们使用了OnModelCreating
,但没有一个人使用ApplicationDbContext
,所以我不知道我是否应该将其真正添加到ApplicationDbContext
中。
那我该怎么办,我需要创建新的DbContext吗?
答案 0 :(得分:0)
一个作者可以拥有多本书,因此您应该在您的作者实体中定义一个书集:
public ICollection<Book> Books { get; set; }
实际上,一本书实际上可以有1位以上的作者(不确定您所用的作者是否相同),但如果确实如此,则应在您的图书实体中声明一组Authors:
public ICollection<Author> Authors { get; set; }
此外,如果您想了解更多信息,确实有大量可用资源:
祝你好运!