2014-01-08 38 views
1

我使用EF6建立和MVC5 Web應用程序,我想使用defualtRoleProvider和defaultMemberShip提供商,但我得到這個錯誤EF6默認角色提供「未找到方法」

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"); 
} 

我第一次使用代碼與現有數據庫中的錯誤,

請幫忙嗎?

回答

0

幾個月前我有類似的問題。從(至少)開始使用Visual Studio 2012推出的ASP.NET默認成員資格版本開始,成員資格使用實體框架進行數據庫交互。與VS2012一起推出的版本與EF的早期版本綁定,並且與EF6不兼容。

解決方法很簡單,如果有點模糊。 VS 2012推出的會員形式也作爲Microsoft ASP.NET Universal Providers Core(版本1)推出給NuGet。他們發佈了一個新版本(版本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> 

如果您使用Web窗體,還更新您的會話提供程序。

<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> 
相關問題