2013-03-10 4 views
2

MVC 4.0 프로젝트에서 역할을 수행하려고했습니다. 엔터티 프레임 워크 연결 문자열을 사용하여 데이터베이스를 쿼리하고 업데이트 할 수 있습니다.역할 공급자에 대한 Entity Framework 연결 문자열이 잘못 되었습니까?

<add name="DataContext" 
    connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl; 
         provider=System.Data.SqlClient; 
         provider connection string='data source=.\SQLEXPRESS; 
         initial catalog=Phase 2; 
         integrated security=True; 
         multipleactiveresultsets=True; 
         application name=EntityFramework'" 
    providerName="System.Data.EntityClient" /> 

이것은 훌륭하게 작동합니다. 내 역할 관리자를 설정하려고 할 때 문제는 내가 잘못된 연결 문자열이 오류가 발생하고 내 연결 문자열이 잘못 알려줍니다

<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="DataContext" 
     applicationName="/" /> 
    </providers> 
</roleManager> 

이 나에게 말한다이다. 조사한 후에는 공급자에게 별도의 연결 문자열을 사용해야합니다. 나는 두 컨넥션 스트링을 같은 컨텍스트로 가리키는 것에 대해 어떻게 생각하는지 모르겠다.

이것은 현재 내 컨텍스트의 이름을 지정하는 방법입니다.

public DataContext() 
     : base("name=DataContext") 
     { 
     } 

이름을 동적으로 설정하는 방법이 있습니까? 아니면이 작업을 수행 할 다른 방법을 찾아야합니까?

답변

4

역할 공급자는 직접적이고 직접적인 ADO.NET 연결 문자열을 가져야합니다. ADO.NET 멤버 자격 및 역할 공급자 시스템은 Entity Framework를 사용하여 테이블에 액세스하지 않습니다.

그래서 이런 걸 사용

<connectionStrings> 
    <add name="RoleProviderConnection" 
     connectionString="data source=.\SQLEXPRESS;initial catalog=Phase 2;integrated security=True;" 
     providerName="System.Data.SqlClient" /> 

및 회원 및 역할 공급자에 대한 똑바로 ADO.NET 연결 문자열을 사용하십시오

<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="RoleProviderConnection" 
     applicationName="/" /> 
    </providers> 
</roleManager> 
+0

덕분에 신속한 응답을. 나는 이것을 시도하고 "잘못된 스키마"라인을 따라 어딘가에 오류가 발생합니다. 방금 일했는데 집에 도착했을 때 특기를 줄 수있었습니다. – Jeff

+0

내 역할 테이블을 가지고 있다면 엔티티 프레임 워크를 사용할 사용자 지정 역할 공급자를 만들 수 있습니까? – Jeff

관련 문제