h b*_*bob 5 asp.net asp.net-mvc entity-framework sql-server-ce asp.net-identity
我正在使用最新的 ASP.NET MVC、身份和实体框架。
示例Identity 项目使用 Sql Server Express。我想使用 Sql Server Compact。
我做了什么:
创建了一个新的空解决方案(不是 MVC 模板)
安装的示例项目:Install-Package Microsoft.AspNet.Identity.Samples -Pre
安装:Install-Package Microsoft.SqlServer.Compact
安装:Install-Package EntityFramework.SqlServerCompact
将默认连接字符串更改为web.config:
<add name="Foo"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=|DataDirectory|\Foo.sdf;" />
Run Code Online (Sandbox Code Playgroud)更改ApplicationDbContext为使用Foo连接字符串:
ApplicationDbContext() : base("name=Foo", false)
Run Code Online (Sandbox Code Playgroud)问题是,ApplicationDbContext第一次访问时(在播种期间,在ApplicationDbInitializer.InitializeIdentityForEF()方法中):
InvalidOperationException: UserId not found线路result = userManager.SetLockoutEnabled(user.Id, false); 我认为这就像更改连接字符串一样简单 - 那么我做错了什么?换句话说,如何将解决方案从 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;
"/>
Run Code Online (Sandbox Code Playgroud)
这是行不通的(XML,所以认为空格会被忽略,但事实并非如此),而这行得通:
<add name="Foo"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=|DataDirectory|\Foo.sdf;Persist Security Info=false;" />
Run Code Online (Sandbox Code Playgroud)
无论如何,问题本身包含将 sqlce 与 Identity2 结合使用的分步说明。也许它会对某人有所帮助。