Я читал о портировании поставщика членства ASP.NET в .NET 3.5 с помощью LINQ & Entities.Однако модель БД, которую показывает каждый отдельный образец, является более новой моделью, в то время как я унаследовал довольно старую модель.Различия:
- Пользователь Таблица разбита на пару Пользователь и членство Таблицы.
- Для всех таблиц в БД добавляется aspnet_
- У меня есть Пониженные версии некоторых столбцов (UserName, Email и т. Д.)
Чтобы работать с этим, я скопировал свойства из таблицы Membership в таблицу User (в БД это отношение 1 <-> 1, а не 1 <-> 0,1),переименован в aspnet_Applications для приложения, aspnet_Profiles в профиль, aspnet_Users для пользователя и aspnet_Roles для роли.(См. Изображение)
Изображение http://content.screencast.com/users/Keith.Barrows/folders/Jing/media/c3cabe76-272d-4a33-b924-8d2c50e45e9c/EFMembership.png
Ссылка на полноразмерное изображение модели
Теперь у меня возникает одна из 2 проблем, когда я пытаюсьcompile.
- Используя модель в изображении, я получаю эту ошибку: Проблема в фрагменте сопоставления, начиная со строки 464: EntitySets 'UserSet' и 'aspnet_Membership' сопоставляются с таблицей 'aspnet_Membership',Их первичные ключи могут конфликтовать.
- Если я удаляю таблицу aspnet_Membership из моей модели (для обработки вышеуказанной ошибки), я получаю: Проблема в фрагменте сопоставления, начиная со строки 384: Столбец aspnet_Membership.ApplicationId в таблице aspnet_Membership должен отображаться: он не имеет значения по умолчанию и не может иметь значения NULL.
Моя способность вручную редактировать резервные хранилища не самая лучшая, и я не хочу простовзломать что-то в этом может сломать другие вещи.Я ищу предложения, лучшие практики и т.д., чтобы справиться с этим.
Примечание: Перемещение самих таблиц данных не вариант, так как я не могу заменить всю логику в существующих приложениях.Я строю этот провайдер EF для нового приложения.В течение следующих 6 месяцев старые приложения будут постепенно переходить на новые структуры.
Примечание: Я добавил ссылку под изображением к полноразмерному изображениюдля лучшего просмотра.