脚手架ApplicationUser

时间:2014-10-14 02:40:30

标签: asp.net-mvc-5 entity-framework-6

我正在使用带有EF 6的ASP.NET MVC 5的默认模板。它生成身份模型为

public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

我希望能够管理和编辑用户列表,所以我搭建了身份模型,并在ApplicationDbContext类中添加了以下行。

public System.Data.Entity.DbSet<QProj.Models.ApplicationUser> ApplicationUsers { get; set; }

我知道这是错的,但我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

如果要管理启用所有默认设置的迁移时为您生成的 AspNetUsers 表,请按以下步骤操作。

  • 首先使用带有视图的MVC 5 Controller创建您的控制器,方法是 EFL

enter image description here

  • 添加具有以下设置的控制器。由于Use async controller actions DbSet不支持异步,除非我们将使用UserManager,否则不应在此处选择/选中Users。那将是另一个话题。

enter image description here

  • 转到生成的控制器,并将ApplicationUsers的所有实例重命名为Users

enter image description here

  • 最后,您现在可以安全地删除ApplicationUsers上的IdentityModel(就我而言,是第37行)

enter image description here

我们需要删除上行显示的第37行,因为在您运行enable-migrations时它将无法建立。由于IdentityDbContext<T>本身已经包含Users属性。因此,无需在DbSet类或为此声明的任何类下添加其他ApplicationDbContext。顺便说一下,此属性是在脚手架ApplicationUser时自动添加的。

答案 1 :(得分:1)

这些步骤使我成功搭建了ApplicationUser:

  1. 将ApplicationUser名称重构为其他内容,例如MyAppUser,
  2. 使用EntityFramework添加Controller,使用模型MyappUser,这将成功搭建MyAppUser,
  3. Scaffolding将为ApplicationDbContext创建属性DbSet<MyAppUser> MyAppUsers,将其删除
  4. 在新创建的控制器中,将db.MyAppUsers的所有出现更改为db.Users
  5. 然后你很高兴去,希望这有帮助