如何在ASP.net Identity 3.0中更改表名?
我已经搜索了但我没有得到任何可行的Identity 3.0
并且此How can I change the table names used by asp.net identity 3 (vnext)?无效。
答案 0 :(得分:2)
您可以通过ToTable("TableName")
的{{1}}上的扩展程序OnModelCreating
更改实体映射,轻松完成此操作:
DbContext
这里唯一的问题是记住使用带有标识符类型的泛型(字符串是AspNetCore上的默认值。
答案 1 :(得分:-1)
仅出于文档目的,对于在未来几年里担任此职位的人(例如我XD),问题的答案:
如何在.NET CORE中更改默认的ASP.NET Identity表名称?
可以这样解决
//Repeat with each table
builder.Entity<ApplicationUser>(entity =>
{
entity.ToTable(name:"Users");
entity.Property(e => e.Id).HasColumnName("UserId");
});
或者可以这样解决
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles");
modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins");
modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims");
modelBuilder.Entity<IdentityRole>().ToTable("MyRoles");
但是您可以简单地使用Alexandru Bucur在他的博客上给出的方法,并在netcore 2.2上进行测试
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
var table = entityType.Relational().TableName;
if (table.StartsWith("AspNet"))
{
entityType.Relational().TableName = table.Substring(6);
}
};
但这不是对netcore> 2.2的更长支持,因此,我需要对其进行修复,这是在NetCore> 2.2上的功能方式
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
var tableName = entityType.GetTableName();
if (tableName.StartsWith("AspNet"))
{
entityType.SetTableName(tableName.Substring(6));
}
}
选择自己喜欢的事物并享受它,HappyCoding