我需要为两个MVC5应用程序使用一个数据库。所以我有一个应用程序创建默认的身份表AspNetUsers等。现在从另一个应用程序我想创建单独的身份表。为此,我试图将表名从AspNetUsers重命名为“BackOfficeApplicationUsers”。以下是我的代码
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityRole>().ToTable("BackOfficeApplicationRoles");
modelBuilder.Entity<ApplicationUser>().ToTable("BackOfficeApplicationUsers");
modelBuilder.Entity<IdentityUserClaim>().ToTable("BackOfficeApplicationUserClaims");
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.UserId, r.RoleId }).ToTable("BackOfficeApplicationUserRoles");
modelBuilder.Entity<IdentityUserLogin>().HasKey(l => new { l.LoginProvider, l.ProviderKey, l.UserId }).ToTable("BackOfficeApplicationUserLogins");
}
当我更新数据库时,我收到错误“AspNetUsers表已经存在”。我知道这是因为从我的第二个应用程序开始,它首先尝试创建AspNetUsers表,然后重命名它。此问题的解决方案是什么,以便两个应用程序都具有单独的标识表。感谢
答案 0 :(得分:0)
让每个MVC站点使用不同的架构并简化OnModelCreating
以基于appSettings设置架构:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var schemaName = ConfigurationManager.AppSettings["SchemaName"] ?? "dbo";
dbModelBuilder.HasDefaultSchema(schemaName);
base.OnModelCreating(dbModelBuilder);
}