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 - не EF; система членства в членстве и ролях 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

Смежные вопросы