В настоящее время у меня есть существующее членство, реализованное в проекте веб-форм ASP.NET 4.5. Приложение использует версию EntityFramework 6.1.3
с DbContext
и в настоящее время в первом подходе базы данных. Я хочу перенести старое членство, чтобы использовать новую систему идентификации ASP.NET 2.0.
Я выполнил эту статью для выполнения миграции, но так и не удалось. Я получил ошибки, упомянутые в Свойство "Претензии" типа "AspNetUser" не является навигационным свойством.
Это подтверждает, что я пропустил что-то основное в процессе миграции.
Может ли кто-нибудь предоставить мне пошаговое руководство для выполнения успешной миграции?
Я хочу рассмотреть следующие вопросы:
1) В тождестве у меня есть некоторые дополнительные пользовательские данные, кроме того, что предоставляет идентификатор по умолчанию. Я вижу, что существует IdentityContext
, который выполняет эти операции идентификации. У меня есть другой контекст, который наследуется от DbContext
. Нужно ли использовать оба контекста? Другими словами, IdentityContext
является обязательным для операции идентификации? Разве эти два контекста не могут быть объединены в один?
2) Я не ограничиваюсь первым подходом к базе данных. Поскольку идентификатор использует первый подход к коду, я в порядке, чтобы перейти к первому подходу кода, но ему необходимы правильные шаги для отслеживания.
3) Так как у меня есть дополнительные пользовательские данные, поэтому мне нужно расширить IdentityUser
, чтобы добавить новые свойства? Если я продолжу IdentityUser
, то личный код будет работать без проблем?
4) Я последовал за https://www.youtube.com/watch?v=blmkPA7XQf8 видеоуроком, который добавляет миграцию в ApplicationDbContext
. ApplicationDbContext наследует IdentityContext
. Он работал у меня, но я хочу добавить перенос для своего собственного контекста, который наследуется от DbContext. Это потому, что ApplicationDbContext не включает другие таблицы (таблицы не идентичности).
5) Я попытался применить миграцию в своем пользовательском файле Context.cs
, который содержит все таблицы идентификации и не идентичности. Я создал этот класс с использованием обратного инженерного подхода EntityFramework Power Tools, как предлагается в в этой статье.
После создания классов POCO я добавил миграцию и обновил базу данных. Основные ошибки, которые я получил:
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.
В соответствии с этим решением я добавил конфигурацию, но в итоге создал новые таблицы для IdentityUserLogin, IdentityRole и т.д., которые являются повторяющимися таблицами идентификации.
6) Даже если я сохраняю повторяющиеся идентификационные таблицы (например, AspNetUserRoles и IdentityUserRole), я не могу получить данные с использованием кода идентификации
var user = userManager.FindAsync(UserName.Text, Password.Text);
и получение исключения:
Invalid column name 'UserId'