EF6 поставщик ролей по умолчанию "не найден"

.net-4.5 asp.net-mvc-5 c# entity-framework-6

Вопрос

Я использую EF6 для сборки и веб-приложения MVC5, и я хочу использовать defualtRoleProvider и поставщик defaultMemberShip, но я получил эту ошибку

System.MissingMethodException: метод не найден: 'System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext ()'.

в web.config я помещаю этот код

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <add connectionStringName="DefaultConnection" applicationName="/" name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers"/>
  </providers>
</roleManager>

и когда я вызвал этот метод, я получил ошибку

if (Roles.RoleExists("CustomerService") == false)
{
    Roles.CreateRole("CustomerService");
}

Я использую код сначала с существующей базой данных,

Любая помощь, пожалуйста?

Популярные ответы

У меня была аналогичная проблема несколько месяцев назад. Начиная с (по крайней мере) версии членства по умолчанию в ASP.NET, которая была развернута с помощью Visual Studio 2012, членство использует Entity Framework для взаимодействия с базами данных. Версия, развернутая с VS2012, привязана к более ранней версии EF и несовместима с EF6.

Решение простое, если несколько неясное. Форма членства, развернутая с VS 2012, также была выпущена в NuGet в качестве Microsoft ASP.NET Universal Providers Core (версия 1). Они выпустили новую версию (версия 2), совместимый с EF6. Перейдите в NuGet, загрузите Microsoft ASP.NET Universal Providers Core. Затем убедитесь, что вы обновили файл web.config для ссылки на соответствующую версию библиотеки поставщиков (в настоящее время 2.0.0).

<profile defaultProvider="DefaultProfileProvider">
    <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="YourConnectionStringName" applicationName="YourApplicationName" />
    </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
    <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="YourConnectionStringName" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="10" minRequiredPasswordLength="0" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="YourApplicationName" />
    </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
    <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="YourConnectionStringName" applicationName="YourApplicationName" />
    </providers>
</roleManager>

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

<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="FirstChoice" />
  </providers>
</sessionState>



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему