我真的可以在我正在努力的想法中使用一些帮助。
我需要IdentityModel和BookModel之间的多对多关系。 像这样的东西。
现在在我的代码中,我在IdentityModel中有这个。
public class ApplicationUser : IdentityUser
{
public virtual ICollection<Book> Books { get; set; }
...
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
...
public System.Data.Entity.DbSet<talkbooks.Models.Book> Books { get; set; }
}
这在我的书模型中
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public string Isbn { get; set; }
public virtual ICollection<ApplicationUser> Users { get; set; }
}
现在我希望用户能够从数据库中选择他们拥有的书籍(为了简单起见,现在只有一本书,我想使用下拉列表进行选择)然后将其存储在数据库。
我考虑过编辑已经搭建的ManageController,以包含一个负责将图书添加到帐户中的方法。
现在,当我创建数据库(代码优先实体)时,它按如下方式创建数据库:
我暂时遗漏了DiscussionModel和MessageModel。 现在我真的需要一些帮助来完成在控制器内部工作所需的代码。我真的尝试过这么多,而且我一直都在失败,我知道这是因为我是一个初学者并缺乏经验。所以我想学习你可以教给我什么。非常感谢所有帮助!
答案 0 :(得分:0)
您的ApplicationDbContext使用EntityFramework,因此这与Identity 2.0无关,而是与EntityFramework本身无关。
要在Entity Framework中创建关系,您有两种选择:
有关这两个选项的示例,请参阅this post。 我更喜欢Fluent API方法,但我认为这真的是个人的事情。在这种情况下,您的示例将如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>()
.HasMany<ApplicationUser>(b => b.Users) // book entity has many users
.WithMany(u => u.Books); // User entity includes many book entities
}