为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕虎7371278 2019-07-22 10:40:21
如何在使用ASP.NET标识时更改表名?我使用的是VisualStudio 2013的发布版本(RTM,而不是RC)(从MSDN 2013-10-18下载),因此使用的是AspNet.IdEntity的最新版本(RTM)。当我创建一个新的Web项目时,我选择“个人用户帐户”进行身份验证。这将创建以下表:阿斯佩罗AspNetUserClaimsAspNetUserLoginsAspNetUserRolesAspNetUser当我注册一个新用户(使用默认模板)时,将创建这些表(上面列出),并且AspNetUsers表插入了一条记录,其中包含:ID用户名密码散列安全邮票鉴别器此外,通过向类“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");     }}
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

以下是我的工作解决方案:

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();
    }}


查看完整回答
反对 回复 2019-07-22
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

还可以创建配置类并指定每个标识类的每个细节,例如:

using System.Data.Entity.ModelConfiguration;public class ApplicationUserConfig : EntityTypeConfiguration<ApplicationUser>{
    public UserConfig()
    {
        ToTable("Users");
        Property(u => u.LocationName).IsRequired();
    }}

然后将这些配置包含在OnModelCreating()方法中:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Configurations.Add(new ApplicationUserConfig());
        ...
    }

这将使您完全控制标识类的每个方面。


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 533 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信