Решение 2. Оставьте две системы и просто добавьте PK-FK между «AspNetUsers» и «MyOldUsersTable» . Возможно, но в полях могут быть дубликаты (электронные письма, телефон). Кроме того, иметь две таблицы пользователей для обслуживания не идеально.
Это работает при добавлении отношения один к нулю к одному между таблицами следующим образом:
modelBuilder.Entity<MyOldUsersTable>()
.HasOptional(e => e.ApplicationUser)
.WithRequired(e => e.MyOldUsersTable)
.Map(m => m.MapKey("MyOldUsersTableId"))
.WillCascadeOnDelete(false);
Наилучшее: решение 3. Дайте Identity понять, что таблица пользователей теперь называется «MyOldUsersTable», удалив все поведения по умолчанию, исходящие из IdentityUser.
Первый шаг - удалить ссылку на IdentityDbContext, заменив:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
по:
public class ApplicationDbContext : DbContext
Затем замените пользовательский магазин по умолчанию на пользовательский:
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
Заменено на:
var manager = new ApplicationUserManager(new CustomUserStore(context.Get<ApplicationDbContext>()));
Наконец, CustomUserStore реализован с использованием необходимых интерфейсов. Например, для пароля, электронной почты и печати безопасности:
public class CustomUserStore : IUserStore<MyOldUsersTable, int>, IUserPasswordStore<MyOldUsersTable, int>, IUserEmailStore<MyOldUsersTable, int>, IUserSecurityStampStore<MyOldUsersTable, int>