ASP.Net MVC 如何在 ApplicationUser 和我自己的 class 之间创建一对多关系?
ASP.Net MVC How to create a one-to-many relationship between the ApplicationUser and my own class?
我正在 Visual Studio 社区 2015 中创建一个 ASP.Net MVC 项目,我必须在其中允许用户创建和管理广告。这是一对多关系,意味着用户可以根据需要创建任意数量的广告。每个用户都可以看到所有广告,但只有创建它们的用户才能编辑它们。由于 MVC 模板已经实现了 Identity,我想使用 class ApplicationUser 作为我的用户 class。
我在模型文件夹中添加了一个 class 广告,如下所示:
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 class:
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 Controller with views, using Entity Framework" 模板的广告控制器来搭建脚手架,但生成的控制器带有以下 error,每次 db.ApplicationUsers 出现在控制器上时都会出现。我不知道我做错了什么,我在 Whosebug 和互联网上到处查看,但 none 的解决方案对我有用。您认为可能有什么问题?
ApplicationUser
只是为您创建的 class 身份。 Identity 存储用户数据的实际 table 是 AspNetUsers
,因此
db.AspNetUsers
应该适合你。
首先你需要在 ApplicationUser
和 Advertisment
之间添加 link,找到 ApplicationUser
class 并添加:
public class ApplicationUser : IdentityUser
{
// Add this line
// vvvvvvvvvvvvv
public virtual ICollection<Advertisment> Advertisments { get; set; }
}
在您的操作方法中,您通过以下方式访问用户:
db.Users
我正在 Visual Studio 社区 2015 中创建一个 ASP.Net MVC 项目,我必须在其中允许用户创建和管理广告。这是一对多关系,意味着用户可以根据需要创建任意数量的广告。每个用户都可以看到所有广告,但只有创建它们的用户才能编辑它们。由于 MVC 模板已经实现了 Identity,我想使用 class ApplicationUser 作为我的用户 class。
我在模型文件夹中添加了一个 class 广告,如下所示:
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 class:
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 Controller with views, using Entity Framework" 模板的广告控制器来搭建脚手架,但生成的控制器带有以下 error,每次 db.ApplicationUsers 出现在控制器上时都会出现。我不知道我做错了什么,我在 Whosebug 和互联网上到处查看,但 none 的解决方案对我有用。您认为可能有什么问题?
ApplicationUser
只是为您创建的 class 身份。 Identity 存储用户数据的实际 table 是 AspNetUsers
,因此
db.AspNetUsers
应该适合你。
首先你需要在 ApplicationUser
和 Advertisment
之间添加 link,找到 ApplicationUser
class 并添加:
public class ApplicationUser : IdentityUser
{
// Add this line
// vvvvvvvvvvvvv
public virtual ICollection<Advertisment> Advertisments { get; set; }
}
在您的操作方法中,您通过以下方式访问用户:
db.Users