如何在使用ASP.NET标识时更改表名?

如何在使用ASP.NET标识时更改表名?

我使用的是VisualStudio 2013的发布版本(RTM,而不是RC)(从MSDN 2013-10-18下载),因此使用的是AspNet.IdEntity的最新版本(RTM)。当我创建一个新的Web项目时,我选择“个人用户帐户”进行身份验证。这将创建以下表:

  1. 阿斯佩罗
  2. AspNetUserClaims
  3. AspNetUserLogins
  4. AspNetUserRoles
  5. AspNetUser

当我注册一个新用户(使用默认模板)时,将创建这些表(上面列出),并且AspNetUsers表插入了一条记录,其中包含:

  1. ID
  2. 用户名
  3. 密码散列
  4. 安全邮票
  5. 鉴别器

此外,通过向类“ApplicationUser”添加公共属性,我成功地向AspNetUsers表添加了其他字段,如“FirstName”、“LastName”、“PhoneNumber”等。

这是我的问题。是否有方法更改上述表的名称(第一次创建这些表时),还是始终使用AspNet我上面列出的前缀?如果表名可以不同的名称,请解释如何命名。

-更新

我实现了@郝公的解决方案。它确实创建了一个新表(例如,我称它为MyUsers),但它仍然创建了AspNetUsers表。其目标是将“AspNetUser”表替换为“MyUser”表。请参阅下面的代码和创建的表的数据库映像。

实际上我想替换每一个AspNet桌子上写着我自己的名字.。例如,MyRoles、MyUserClaims、MyUserLogins、MyUserRoles和MyUser。

我如何做到这一点,最后只有一组表?

public class ApplicationUser : IdentityUser{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string PostalCode { get; set; }
    public string PhonePrimary { get; set; }
    public string PhoneSecondary { get; set; }}public class ApplicationDbContext : IdentityDbContext<ApplicationUser>{
    public ApplicationDbContext(): base("DefaultConnection")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<IdentityUser>().ToTable("MyUsers");
    }}



慕虎7371278
浏览 534回答 3
3回答

潇湘沐

以下是我的工作解决方案:public class ApplicationDbContext : IdentityDbContext<ApplicationUser>{     public ApplicationDbContext()         : base("DefaultConnection", throwIfV1Schema: false)     {     }     protected override void OnModelCreating(DbModelBuilder modelBuilder)     {         base.OnModelCreating(modelBuilder); // This needs to go before the other rules!         modelBuilder.Entity<ApplicationUser>().ToTable("User");         modelBuilder.Entity<IdentityRole>().ToTable("Role");         modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");         modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim");         modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");     }     public static ApplicationDbContext Create()     {         return new ApplicationDbContext();     }}

阿波罗的战车

还可以创建配置类并指定每个标识类的每个细节,例如:using&nbsp;System.Data.Entity.ModelConfiguration;public&nbsp;class&nbsp;ApplicationUserConfig&nbsp;:&nbsp;EntityTypeConfiguration<ApplicationUser>{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;UserConfig() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ToTable("Users"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Property(u&nbsp;=>&nbsp;u.LocationName).IsRequired(); &nbsp;&nbsp;&nbsp;&nbsp;}}然后将这些配置包含在OnModelCreating()方法中:protected&nbsp;override&nbsp;void&nbsp;OnModelCreating(DbModelBuilder&nbsp;modelBuilder) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.OnModelCreating(modelBuilder); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modelBuilder.Configurations.Add(new&nbsp;ApplicationUserConfig()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;}这将使您完全控制标识类的每个方面。
打开App,查看更多内容
随时随地看视频慕课网APP