使用带有ASP.NET标识的SQL Server Compact

使用带有ASP.NET标识的SQL Server Compact,asp.net,asp.net-mvc,entity-framework,sql-server-ce,asp.net-identity,Asp.net,Asp.net Mvc,Entity Framework,Sql Server Ce,Asp.net Identity,我正在使用最新的ASP.NET MVC、身份和实体框架 使用Sql Server Express。我想使用Sql Server Compact 我所做的: 创建了一个新的空解决方案(不是MVC模板) 已安装的示例项目:Install Package Microsoft.AspNet.Identity.Samples-Pre 已安装:安装软件包Microsoft.SqlServer.Compact 已安装:Install Package EntityFramework.SqlServerComp

我正在使用最新的ASP.NET MVC、身份和实体框架

使用Sql Server Express。我想使用Sql Server Compact

我所做的:

  • 创建了一个新的空解决方案(不是MVC模板)

  • 已安装的示例项目:
    Install Package Microsoft.AspNet.Identity.Samples-Pre

  • 已安装:
    安装软件包Microsoft.SqlServer.Compact

  • 已安装:
    Install Package EntityFramework.SqlServerCompact

  • web.config
    中的默认连接字符串更改为:

    <add name="Foo" 
         providerName="System.Data.SqlServerCe.4.0" 
         connectionString="Data Source=|DataDirectory|\Foo.sdf;" />
    
问题是,当第一次访问
ApplicationDbContext
时(在种子设定期间,在
ApplicationDbInitializer.initializedEntityForef()
方法中):

  • 数据库已创建
  • 我在
    result=userManager.SetLockoutEnabled(user.Id,false)行中得到一个
    InvalidOperationException:UserId未找到

我认为这就像更改连接字符串一样简单——那么我做错了什么呢?或者换句话说,如何将解决方案从SQL Server Express转换为SQL Server Compact?

发现错误。我的连接字符串错误,我有:

<add name="Foo"
     providerName="System.Data.SqlServerCe.4.0"
     connectionString="
       Data Source=|DataDirectory|\Foo.sdf;
       Persist Security Info=false;
       "/>

这不起作用(XML,所以认为空白被忽略了,它不起作用),而这起作用:

<add name="Foo"
     providerName="System.Data.SqlServerCe.4.0"
     connectionString="Data Source=|DataDirectory|\Foo.sdf;Persist Security Info=false;" />


无论如何,问题本身包含一个使用标识为2的sqlce的步骤。也许它会帮助别人。

我已经按照你的指示做了,一切正常。
<add name="Foo"
     providerName="System.Data.SqlServerCe.4.0"
     connectionString="Data Source=|DataDirectory|\Foo.sdf;Persist Security Info=false;" />