我正在使用最新的ASP.NET MVC、Identity和Entity Framework。
示例Identity项目使用Sql Server Express。我想使用Sql Server Compact。
我的做法:
Created a new empty solution (not MVC template)
Installed sample project:
Install-Package Microsoft.AspNet.Identity.Samples -Pre
Installed:
Install-Package Microsoft.SqlServer.Compact
Installed:
Install-Package EntityFramework.SqlServerCompact
Changed default connection string in
web.config
to:<add name="Foo" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=|DataDirectory|\Foo.sdf;" />
Changed
ApplicationDbContext
to use theFoo
connection string:ApplicationDbContext() : base("name=Foo", false)
问题在于,在第一次访问ApplicationDbContext
时(在种子数据中,在ApplicationDbInitializer.InitializeIdentityForEF()
方法中):
- 数据库将被创建。
- 对于行
result = userManager.SetLockoutEnabled(user.Id, false);
,我会收到一个InvalidOperationException: UserId not found
。
我原以为只需要更改连接字符串即可解决问题——那么我做错了什么?换句话说,我该如何将解决方案从SQL Server Express转换为SQL Server Compact?