Код MVC3 + EF4.1 Сначала, но с использованием .NET членства - а? - PullRequest
4 голосов
/ 02 июня 2011

В настоящее время я изучаю MVC3, EF4.1 и действительно люблю подход Code First.

Однако я хочу использовать встроенный поставщик .NET Memembership и сгенерированную БД.

Что я не могу понять, так это то, как я кодирую свой Домен для связи с БД Членства, а также как заставить БД генерировать через EF. Я могу запустить соответствующие сценарии для генерации БД, но тогда это не работает и на самом деле все равно не так.

Я не ожидаю полных ответов, мне просто нужно указывать в направлении учебника, который объясняет, как это можно сделать.

Если единственным ответом является реализация моего собственного поставщика членства, тогда все в порядке, но опять же - это похоже на большую ненужную работу, учитывая, что MVC поставляется с реализацией, полностью готовой из коробки?

С уважением,

Wayne

Ответы [ 3 ]

0 голосов
/ 12 июня 2011

Я создал пользовательский MembershipProvider с использованием правил, установленных Microsoft (http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx);, однако сам я сначала использую модель, сначала использую код). Я сам создал таблицы в конструкторе, а затем сгенерировал свою базу данных, После того, как моя структура стала здоровой, я создалчлен MembershipProvider, реализуя только те функции, которые мне были нужны, по мере необходимости, в значительной степени выбрасывая исключения для тех, которые я не использовал.

Если это не работает для вас, вы можете использовать что-то похожее на пункт 2 в ответе @ Eranga, но, возможно, использовать шаги подготовки базы данных, использованные здесь: http://www.brianhawkinstech.com/development/120-preparing-your-ms-sql-database-for-use-with-aspnet-membership-provider. Это создаст хранимые процедуры, необходимые для SqlMemberhipProvider, а также. Я знаю, что это будет работать с базой данных первым, но не уверен, как это будет работать с кодом сначала.

Сложность использования подхода, описанного в пункте 2 выше, объясняет, почему я использовал подход с пользовательским членством. Хорошая особенность этого подхода заключается в том, что вы можете затем повторно использовать код и в своих собственных будущих проектах, но это, конечно, трудоемкий подход.

0 голосов
/ 31 мая 2012

Если вы хотите реализовать свой собственный поставщик членства и ролей, который я рекомендую, то вот отличное руководство для него: http://www.brianlegg.com/post/2011/05/09/Implementing-your-own-RoleProvider-and-MembershipProvider-in-MVC-3.aspx

0 голосов
/ 02 июня 2011

если ваши таблицы членства находятся в другой базе данных, чем таблицы вашего домена, то вы не можете использовать один DbContext в EF.Здесь вы можете создать два контекста, например SecurityContext и DomainContext, для каждой из этих баз данных.Но вы не сможете делать запросы, присоединившись к сущностям, которые находятся в каждом из этих контекстов, и оба контекста не будут использовать одну и ту же транзакцию при обновлении базы данных (т.е. ни одной единицы работы).создать эти таблицы членства в вашей базе данных вместо двух баз данных.Тогда вы можете использовать один DbContext здесь (или событие 2, если они полностью независимы).Здесь, если вы смоделировали все таблицы, столбцы и отношения правильно, вы можете создать полную базу данных, используя EF.Но если я правильно помню, SqlMembershipProvider использует хранимые процедуры.Если это так, у вас возникнут небольшие проблемы при создании всей базы данных.

Если вы сможете предоставить больше информации, проще будет дать более конкретное решение.

...