我正在Visual Studio社区2015中创建一个ASP.Net MVC项目,我必须让用户创建和管理广告。这是一对多的关系,意味着用户可以根据自己的喜好创建尽可能多的广告。每个用户都可以看到所有广告,但只有创建它们的广告才能编辑它们。由于MVC模板已经实现了Identity,我想使用ApplicationUser类作为我的用户类。
我在我的Model文件夹中添加了一个类Avertisement,如下所示:
public class Advertisement
{
public int AdvertisementId { get; set; }
public string Description { get; set; }
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
然后我将Advertisement DbSet添加到ApplicationDbContext类:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) {}
public DbSet<Advertisement> Advertisements { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
之后,我启用迁移并重建解决方案:
Enable-Migrations
add-migrations InitialCreate
update-database
在此之前,一切都顺利进行。现在来了我的问题。我现在通过添加一个广告控制器和“具有视图的MVC 5控制器,使用实体框架”模板来尝试脚手架,但生成的控制器附带了每次db.ApplicationUsers出现在控制器上时出现的以下error。我不知道我做错了什么,我在stackoverflow和互联网上到处都是,但没有一个解决方案适合我。您认为可能出错?
答案 0 :(得分:1)
首先,您需要在ApplicationUser
和Advertisment
之间添加链接,找到ApplicationUser
类并添加:
public class ApplicationUser : IdentityUser
{
// Add this line
// vvvvvvvvvvvvv
public virtual ICollection<Advertisment> Advertisments { get; set; }
}
在您的操作方法中,您可以使用以下方式访问用户:
db.Users
答案 1 :(得分:0)
ApplicationUser
只是Identity为您创建的一个类。 Identity存储用户数据的实际表是AspNetUsers
,所以
db.AspNetUsers
应该适合你。