让SQL Server Compact支持 Membership, Role and Profile provider

使用sqlserver Compact4.0的开发环境

1. VS2010SP1

2. Microsoft SQL Server Compact 4.0

3. Visual Studio 2010 SP1 Tools for SQL Server Compact 4.0  因为SQL Server Compact 4.0是VS10之后才出来的

其中 Compact4.0解决了之前版本中使用EF时,不能将主键设置为自动增长的int类型的问题,具体请参考这里:http://msdn.microsoft.com/zh-cn/library/cc835494.aspx

然而Compact中不支持存储过程、角色的等,导致无法使用aspnet_regsql.ext注册工具。

对于该问题有个其它的解决办法。

功能描述:

实现在使用SQL Server Compact4.0数据库的网站里也能用“会员、角色、配置”功能作为表单验证等。

功能说明:

此功能由Nuget.org提供,它支持所有的SQL Sever 2005以上的版本,当然其中也包括SQL Server Compact 4.0.更多详细说明请点击这里

使用此功能的方法(只需要2个简单的步骤即可完成)

另:如果你正在用NuGet package,你仅仅需要设置roleManager-enabled=true即可。

第一步:复制"SqlCeMembershipProvider.cs、SqlCeMembershipUtils.cs、SqlCeProfileProvider.cs、SqlCeRoleProvider.cs"四个文件到/App_Code文件夹下(如果没有自己就建立一个)

第二步:修改你的web.config文件,并添加如下内容:

复制代码
<connectionStrings>
    <add name="ApplicationServices" connectionString="data source=|DataDirectory|\SqlCeAspnetdb.sdf"/>
</connectionStrings>

<system.web>
   <compilation>
      <assemblies>
         <add assembly="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </assemblies>
   </compilation>
   <authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
   </authentication>
    <membership defaultProvider="SqlCeMembershipProvider">
      <providers>
        <clear/>
        <add 
              name="SqlCeMembershipProvider" 
              type="ErikEJ.SqlCeMembershipProvider" 
              connectionStringName="ApplicationServices" 
              applicationName="/" 
              enablePasswordRetrieval="false" 
              enablePasswordReset="true" 
              requiresQuestionAndAnswer="false" 
              requiresUniqueEmail="true" 
              passwordFormat="Hashed" 
              encryptionKey="FF09F72BA97CBBB5EEAAFF"
              writeExceptionsToEventLog="false" />
      </providers>
    </membership>
    <roleManager defaultProvider="SqlCeRoleProvider" 
            enabled="true" 
            cacheRolesInCookie="true" 
            cookieName=".ASPROLES" 
            cookieTimeout="30" 
            cookiePath="/" 
            cookieRequireSSL="false" 
            cookieSlidingExpiration="true" 
            cookieProtection="All">
      <providers>
        <clear/>
        <add 
            name="SqlCeRoleProvider" 
            type="ErikEJ.SqlCeRoleProvider" 
            connectionStringName="ApplicationServices" 
            applicationName="/" 
            writeExceptionsToEventLog="true"/>
      </providers>
    </roleManager>
  </system.web>
复制代码

那么到现在你就可以用它创建用户或者用户角色了并可以用它进行登录控制等。

 源码下载

 关于sqlserver Compact的部署问题,可以参考这里:http://www.cnblogs.com/TomXu/archive/2011/11/25/2263225.html

原文地址:https://www.cnblogs.com/flyinghigher/p/2792489.html