Могу ли я использовать Entity Framework с членством ASP.NET?

Я создаю (действительно, воссоздаю) приложение, имеющее существующие пользовательские и другие данные в базах данных MS-Access. Данные будут перемещены на SQL Server, а часть из них будет связана с переносом пользователей. Я хочу использовать EF для работы с ORM, и я уверен, что знаю, что модель данных будет в SQL Server. Я новичок в EF, но не в ASP.NET, и я хотел бы воспользоваться функциями членства в ASP.NET. Я думаю о нескольких способах сделать это и хотел бы получить некоторые советы. До сих пор я сделал небольшое исследование об этой идее, возможно, это было отвечено в другом месте. Итак, здесь идет кластер связанных вопросов.

  • Может ли EF работать напрямую с членством ASP.NET через некоторый класс или пространство имен, о котором я не знаю?

  • Если я перехожу к системе Membership, чтобы выровнять их идентификаторы пользователей с данными в других таблицах, я должен создать другой набор таблиц для пользовательских данных поверх таблиц aspnet_ * a la DotNetNuke?

  • Я хочу избежать ситуации, когда я использую встроенные функции членства только для аутентификации пользователя и переключения в контекст EF, когда я работаю с данными, помеченными пользователем. Кажется неуклюжим вывести информацию о пользователе для привязки к столбцу в GridView, перейдя в пользовательский элемент для каждой строки, но, может быть, что нужно? Нужно ли мне сосать его и реплицировать классы членства в EF для целей извлечения данных?

  • Я подумывал о том, чтобы реализовать какой-то поставщик EF для членства, полагая, что, возможно, тогда поставщик может сидеть внутри общей модели данных EF. Это безумный разговор? (Я никогда раньше не писал своего провайдера)

Не стесняйтесь сказать мне, что я не имею никакого смысла.

Ответ 1

Почему бы не сделать это наоборот? Вы можете реализовать собственный поставщик членства для asp.net, который использует нужную вам модель.

Если требуемые функции не полностью соответствуют встроенной реализации членства asp.net, вы можете просто свернуть своего собственного провайдера. Если вы будете использовать только пару функций, вам придется реализовать только пару методов (вам не нужно заполнять реализацию для всех методов). Если вам нужно больше возможностей, чем поддерживает, использование провайдера членства может помешать вам.

Ответ 2

  • Мы делаем, но мы не сопоставляем таблицы членства. Вы не должны предполагать использование поставщика членства SQL.
  • Мы сопоставляем идентификатор пользователя, а не идентификатор DB. Тонкий, но важный. Опять же, помните, что есть другие поставщики членства (например, домен auth).
  • Вы можете уточнить вопрос? Вам не нужно будет копировать всю информацию о членстве в вашей EF-модели, но вам понадобится список известных идентификаторов.
  • Нет, совсем не сумасшедший, но трудный и, вероятно, не нужен.