Разрабатывая новое приложение в asp.net 4, я должен решить, как использовать API членства в MS SQL вместе с моими собственными данными в базе данных MS SQL. Во-первых, мне нужно хранить данные профиля пользователя и получать к ним доступ более гибким образом, чем это поддерживает поставщик профилей. Во-вторых, я хотел бы связать другую информацию, связанную с пользователем (например, заказы).
Независимо от того, где вы храните свои таблицы aspnetdb (в отдельной базе данных или в той же базе данных, что и ваши данные), проблема заключается в том, как поддерживать синхронизацию данных.
После исследования я вижу следующие подходящие варианты:
1. UserId внешнего ключа от asp_Users (предлагается в это руководство).
2. Без внешнего ключа - используйте транзакции (рекомендуется здесь).
3. Без внешнего ключа - используйте настраиваемый AccountController (какой бы он ни был, рекомендуется здесь).
4. Дополнительная таблица, которая связывает пользовательский идентификатор членства (uid) с пользовательским идентификатором пользователя (int).
5. ...
С одной стороны, мне нравится первое решение, поскольку оно довольно простое и предлагается в официальном руководстве asp.net.
С другой стороны, оппоненты вполне разумно отмечают, что использование внешних ключей нарушает общую идею поставщиков, которые должны помогать разделять проблемы и быть взаимозаменяемыми. Но, к сожалению, они не вдавались в подробности реализации, поэтому непросто оценить эти предложения с точки зрения актуальности и простоты реализации.
Итак, как лучше всего подойти к этому? Кроме того, как будет выглядеть реализация? Достаточно ли использовать только дополнительный код ADO.NET или LINQ и т. Д., Или стоит реализовать собственный поставщик членства и / или профиля?
Заранее спасибо.