重命名ASP.NET标识表时重复外键

Jon*_*han 19 c# sql asp.net-mvc entity-framework-5 asp.net-identity

我按照这个问题中的建议重命名我的ASP.NET标识表:

modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");
modelBuilder.Entity<IdentityRole>().ToTable("Role");
modelBuilder.Entity<IdentityUser>().ToTable("User");
modelBuilder.Entity<ApplicationUser>().ToTable("User");
Run Code Online (Sandbox Code Playgroud)

但是,这会导致UserClaim与User关系的两个属性 - UserId以及IdentityUser_Id:

在此输入图像描述

有什么办法可以解决这个问题吗?

小智 26

你应该跳过以下行,然后它完美地工作:

modelBuilder.Entity<IdentityUser>().ToTable("User");
Run Code Online (Sandbox Code Playgroud)

所以你需要的唯一映射是:

modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");
modelBuilder.Entity<IdentityRole>().ToTable("Role");
modelBuilder.Entity<ApplicationUser>().ToTable("User");
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • 有一个[msdn blog](https://blogs.msdn.microsoft.com/webdev/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates/ )(参见评论部分@Giang)有关于如何重命名`AspNetUsers`表的代码示例,我认为很多人都看到了这一点,这使他们相信添加`modelBuilder.Entity <IdentityUser>().ToTable("User") );`是正确的方式,实际上它不是. (2认同)