Сначала используйте существующую схему членства в aspnet с новой базой данных ASP.NET MVC
Я ищу некоторые рекомендации здесь... У меня есть старый сайт веб-форм ASP.NET с существующей базой данных и членством в SQL Server, и я создаю новый интерфейс, используя ASP.NET MVC и Entity Framework с базой данных в первую очередь подход.
Итак, у меня есть таблицы, как показано ниже:
Моя проблема в том, что я не уверен, как использовать эти старые таблицы членства для аутентификации в новом приложении ASP.NET MVC.
Я не возражаю против того, перенесу ли я данные о пользователях / ролях в ASP.NET Identity или продолжу использовать старую базу данных о членстве, но я не уверен, что это лучший подход. Я думаю, что я бы предпочел перенести данные, так как я больше знаком с Identity.
Что я пробовал...
При поиске решений я сталкивался с этим: несколько раз переносить существующий веб-сайт с членства в SQL на удостоверение ASP.NET, однако это (и большая часть того, что я нашел до сих пор) говорит об обновлении существующего сайта веб-форм для использования asp..net личность. Я пытался использовать его части для переноса данных о членстве в удостоверение asp.net, но, конечно, остальные инструкции не соответствуют моему сценарию.
Так вот где я сейчас.
Я использовал сценарий SQL в пошаговом руководстве, указанном выше, для переноса данных о членстве в таблицы идентичности asp.net.
Я настроил SQLPasswordHasher, как описано в пошаговом руководстве, так как я полагаю, что мне понадобится эта функция, чтобы использовать существующие логины.
Я импортировал эти таблицы в базу данных, которая содержит данные веб-сайта, в надежде, что мне придется иметь дело только с одной строкой соединения.
Я модифицировал
ApplicationDbContext : base
... использовать эту базу данных (ранее она использовала DefaultConnection (LocalDb)
Итак, теперь у меня есть эти таблицы, заполненные данными:
Я застрял.
Вполне возможно, что мне не хватает чего-то простого, но в любом случае, если я пытаюсь войти или зарегистрировать нового пользователя в его текущем состоянии, я получаю ошибку:
Тип сущности ApplicationUser не является частью модели для текущего контекста.
на линии:
var result = await UserManager.CreateAsync(user, model.Password);`
Единственные решения, которые я смог найти для этой ошибки, были в проектах с кодом: что-то связанное с миграциями, которые я не использую (я пробовал, но получил сообщение об ошибке при включении-миграции "Создание DbModelBuilder или писать EDMX из DbContext
созданные с использованием базы данных сначала или модели не поддерживаются.")
ОБНОВЛЕНИЕ Хорошо, поэтому я наткнулся на ответ относительно The entity type ApplicationUser is not part of the model for the current context.
ошибка, по-видимому, использование строки подключения, сгенерированной структурой сущностей, может быть проблематичным, поэтому, как мне посоветовали, я сделал "нормальную" строку подключения, и это, кажется, становится ближе!
ОБНОВЛЕНИЕ 2
Я думаю, что он работает, будет запускать некоторые тесты, прежде чем обновляться с моим решением.
1 ответ
Пожалуйста, выполните следующие шаги, чтобы сделать это.
- Создайте новый проект ASP.NET MVC с аутентификацией пользователя.
- Теперь щелкните правой кнопкой мыши на папке "Модель" и добавьте новый элемент "Модель данных объекта ADO.NET", введите имя вашей модели и выберите "ОК". Теперь выберите "Подход к базе данных" и укажите имя базы данных, а также имя подключения и подключения, которые будут сохранены в файле web.config.
- Теперь перейдите к файлу web.config, и вы увидите, что в вашей строке подключения определены два подключения, и каждая точка подключения к другой базе данных, одна для IDENTITY, а другая для, которую вы добавили только сейчас. например:
- вам нужно изменить источник данных обоих соединений, чтобы они были одинаковыми.
- Поэтому, когда вам нужен доступ к пользовательской информации, вам нужно использовать ApplicationDbContext, а для других вы можете использовать свой контекст CustomConn, который вы определили ранее при добавлении новой модели.
Надеюсь, что это поможет вам!