Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SimpleMembershipProvider з ADO.NET EDM / 14 сообщений из 14, страница 1 из 1
22.05.2013, 12:56
    #38268154
netls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Хочу использовать SimpleMembershipProvider с ADO.NET EDM, без написания прослойки относительно MembershipProvider

В Entity Data Model с помощью сопоставления, сопоставлены таблицы:
Admin_Membership к webpages_Membership
AdminInType к webpages_UsersInRoles
UserAdmin к UserProfile
RoleUserAccaunt к webpages_Roles

В проекте используется EntityFramework 5
также установлено провайдер для работы с EDM (Microsoft ASP.NET Universal Providers Core Libraries 1.2)

При запуске не выполняется Инитиализация относительно EDM (в свою очередь не запускаэться SimpleMembership)
Не удалось найти запрошенного поставщика данных .Net Framework. Возможно он не установлен.
Код: c#
1.
WebSecurity.InitializeDatabaseConnection("daseSystemEntities", "UserProfile", "UserId", "UserName", autoCreateTables: false);


При запуске не выполняется Инитиализация относительно EDM (в свою очередь не запускаэться SimpleMembership)

Мой web.config
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 <connectionStrings>
    <add name="daseSystemEntities" connectionString="metadata=res://*/DAL.AdminModel.csdl|res://*/DAL.AdminModel.ssdl|res://*/DAL.AdminModel.msl;provider=System.Data.SqlClient;provider connection string="data source=NPC;initial catalog=baseSystem;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />  
  </connectionStrings>
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"  />
      </providers>
    </membership>
    <roleManager defaultProvider="SimpleRoleProvider" enabled="true">
      <providers>
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
      </providers>
    </roleManager>


Пожалуйста подскажите, или предоставьте пример правильного написания Web.config!!!
...
Рейтинг: 0 / 0
22.05.2013, 15:29
    #38268492
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Всё работает. Убрал Code First, прикрутил Edm, работает должным образом. Проверяй.
...
Рейтинг: 0 / 0
22.05.2013, 15:42
    #38268532
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Вообще вот это указывать не надо, оно и так по дефолту.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"  />
      </providers>
    </membership>
    <roleManager defaultProvider="SimpleRoleProvider" enabled="true">
      <providers>
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
      </providers>
</roleManager>



Но если указываешь, то нужно чистить остальные провайдеры:

Код: xml
1.
2.
3.
4.
<providers>
        <clear />
        <add ... />
</providers>
...
Рейтинг: 0 / 0
22.05.2013, 19:42
    #38268981
netls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Спасибо за ответ
Да за clear вы правы, упостил
Код: xml
1.
2.
3.
4.
<providers>
        <clear />
        <add ... />
</providers>



Но в вашем примере для SimpleMembership инитиализация соединения выполняется по DefaultConnection с провайдером SqlClient
а не по соединении UsersContext с провайдером EntityClient
Код: xml
1.
2.
3.
4.
 <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=Membership;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="UsersContext" connectionString="metadata=res://*/UsersContext.csdl|res://*/UsersContext.ssdl|res://*/UsersContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Membership;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>


Код: c#
1.
 WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);



В моем случае нет непосредственно созданных таблиц MS SQL базе с именами webpages_Membership, webpages_UsersInRoles, UserProfile, webpages_Roles
Я их сопоставяю с помощью Entity Data Model например:
Код: plaintext
1.
2.
3.
Admin_Membership к webpages_Membership
AdminInType к webpages_UsersInRoles
UserAdmin к UserProfile
RoleUserAccaunt к webpages_Roles

Поэтому в моем случае если в базе непосредственно нет таблиц webpages_Membership, webpages_UsersInRoles, webpages_Ролес , названия которых в SimpleMembershipProvider заданные по умолчанию как константы, даст Ошибку

Если я не четко выложил суть проблемы или неправильно понял Ваш ответ. Буду признателен за детальный ответ.
...
Рейтинг: 0 / 0
22.05.2013, 22:43
    #38269184
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Не надо ничего придумывать и сопоставлять, используй нативные таблицы симпла и не будет никаких проблем.
...
Рейтинг: 0 / 0
23.05.2013, 11:08
    #38269623
netls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Если я Вас правильно понял, вы говорите чтобы SimpleMembershipProvider создал при ининиализации нужные ему таблицы с помощью autoCreateTables: true и не париться.

К сожалению это решение не подходит ведь уже есть созданные таблицы MembershipProvider в данной базе которые использует другой ресурс.
Данные из таблиц симпла должны быть уникальны для каждого ресурса поэтому я и использовал сопоставленного в EF 5. Данное решение я принял з http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx где говорится что MembershipProvider + EF + Microsoft ASP.NET Universal Провидерс (версия> 1.1) должны работать корректно.
К сожалению у меня не выходить
...
Рейтинг: 0 / 0
23.05.2013, 11:28
    #38269671
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
netlsЕсли я Вас правильно понял, вы говорите чтобы SimpleMembershipProvider создал при ининиализации нужные ему таблицы с помощью autoCreateTables: true и не париться.

К сожалению это решение не подходит ведь уже есть созданные таблицы MembershipProvider в данной базе которые использует другой ресурс.
Данные из таблиц симпла должны быть уникальны для каждого ресурса поэтому я и использовал сопоставленного в EF 5. Данное решение я принял з http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx где говорится что MembershipProvider + EF + Microsoft ASP.NET Universal Провидерс (версия> 1.1) должны работать корректно.
К сожалению у меня не выходить
...
Рейтинг: 0 / 0
23.05.2013, 11:28
    #38269672
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
netlsЕсли я Вас правильно понял, вы говорите чтобы SimpleMembershipProvider создал при ининиализации нужные ему таблицы с помощью autoCreateTables: true и не париться.
Именно.

netlsК сожалению это решение не подходит ведь уже есть созданные таблицы MembershipProvider в данной базе которые использует другой ресурс.
Тогда без понятия. Либо попробуй вьюхами обвяжи с названиями webpages_Membership, webpages_UsersInRoles, ... Возможно, такой хак пройдёт. Либо слепи классический мембершип провайдер на кастом таблицах. Как сделать через прямые руки то, что ты хочешь, я не знаю. Возможно как-то можно честно кастомизировать симпл.
...
Рейтинг: 0 / 0
23.05.2013, 13:01
    #38269901
netls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
На данный момент для вирышення данной задачи я буду использовать
MongoSimpleMembership http://lyphtec.github.io/MongoSimpleMembership/
Позволяет использовать нужные таблицы из базы данных
Код: xml
1.
2.
3.
4.
5.
6.
 <appSettings>
    <add key="MongoSimpleMembership:MembershipAccountName" value="webpages_Membership" />
    <add key="MongoSimpleMembership:OAuthMembershipName" value="webpages_OAuthMembership" />
    <add key="MongoSimpleMembership:OAuthTokenName" value="webpages_OAuthToken" />
    <add key="MongoSimpleMembership:RoleName" value="webpages_Role" />
  </appSettings>
...
Рейтинг: 0 / 0
23.05.2013, 13:06
    #38269911
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Надо заюзать исходники и посмотреть, как они сделали. Наверное, SimpleMembership провайдер перекорёжили.
...
Рейтинг: 0 / 0
26.05.2013, 16:26
    #38273725
netls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Может кому-то нужно
Переписал SimpleMembershipProvider 2.0
От EF отказался потому что есть избыточность которая позже может выйти боком.

Таблици задаются в веб конфиге, если не заданы берутся по умолчанию стандартные
Код: xml
1.
2.
3.
4.
5.
6.
7.
<appSettings>
    <add key="SimpleMembershipProvider:webpages_Membership" value="admin_Membership" />
    <add key="SimpleMembershipProvider:webpages_OAuthMembership" value="OAuthMembership" />
    <add key="SimpleMembershipProvider:webpages_OAuthToken" value="OAuthToken" />
    <add key="SimpleMembershipProvider:webpages_Roles" value="Roles" />
    <add key="SimpleMembershipProvider:webpages_UsersInRoles" value="UsersInRoles" />
  </appSettings>
...
Рейтинг: 0 / 0
26.05.2013, 18:09
    #38273816
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
netlsПереписал SimpleMembershipProvider 2.0
Переписать весь WebMatrix.WebData? Жестоко...
...
Рейтинг: 0 / 0
26.05.2013, 20:09
    #38273913
netls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Да, другого варианта не было. Данное решение поддерживает дальнейшее нормальное расширение, и открытость кода.
:-) К сожалению написания с нуля кода мне заняло меньше времени, чем поиск решения.
...
Рейтинг: 0 / 0
26.05.2013, 20:37
    #38273936
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SimpleMembershipProvider з ADO.NET EDM
Ну не знаю. Я б, наверное, отказался от симпла и смотрел в сторону классического мембершип провайдера.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SimpleMembershipProvider з ADO.NET EDM / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]