如何更改 asp.net identity 3 (vnext) 使用的表名?
Posted
技术标签:
【中文标题】如何更改 asp.net identity 3 (vnext) 使用的表名?【英文标题】:How can I change the table names used by asp.net identity 3 (vnext)? 【发布时间】:2016-04-04 01:07:24 【问题描述】:在 asp.net identity 2 中用于更改身份表名称的方法在 asp.net identity 3 中不起作用。
【问题讨论】:
【参考方案1】:您可以通过在DbContext
的OnModelCreating
上使用扩展方法ToTable("TableName")
更改实体映射来轻松做到这一点:
您不需要使用.ForSqlServerToTable()
,只需.ToTable()
就可以在任何数据库中使用。
protected override void OnModelCreating(ModelBuilder builder)
base.OnModelCreating(builder);
builder.Entity<User>().ToTable("Users"); // Your custom IdentityUser class
builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogins");
builder.Entity<IdentityUserToken<string>>().ToTable("UserTokens");
builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaims");
builder.Entity<IdentityUserRole<string>>().ToTable("UserRoles");
builder.Entity<IdentityRoleClaim<string>>().ToTable("RoleClaims");
builder.Entity<IdentityRole>().ToTable("Roles");
这里唯一的问题是记住使用带有标识符类型的泛型(字符串是 AspNetCore 上的默认值。
【讨论】:
【参考方案2】:在 ApplicationDbContext 的 OnModelCreating 中修改构建器实体,使用 ForSqlServerToTable 扩展方法更改所需的表名称。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
protected override void OnModelCreating(ModelBuilder builder)
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
builder.Entity<ApplicationUser>().ForSqlServerToTable("Users");
builder.Entity<IdentityUserRole<string>>().ForSqlServerToTable("UserRoles");
builder.Entity<IdentityUserLogin<string>>().ForSqlServerToTable("UserLogins");
builder.Entity<IdentityUserClaim<string>>().ForSqlServerToTable("UserClaims");
builder.Entity<IdentityRole>().ForSqlServerToTable("Roles");
【讨论】:
用普通的ToTable
而不是 ForSqlServerToTable
为我工作。 (虽然我在 dotnet core 示例项目中使用了 asp.net core 身份,所以可能对你没有帮助)以上是关于如何更改 asp.net identity 3 (vnext) 使用的表名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不影响密码更改行为的情况下正确防止 ASP.NET Identity 2.2.1 中的多个活动会话?