【发布时间】:2012-12-19 03:06:37
【问题描述】:
在 VS 2010 SP1 中,我从“internet”模板创建了一个 ASP.NET MVC4 项目。然后我为 SQL Server CE 4.0 创建了一个连接字符串:
<add name="DefaultConnection"
connectionString="Data Source=|DataDirectory|MyDatabase.sdf;Password=123456"
providerName="System.Data.SqlServerCe" />
在 cassini 中成功调试启动 Web 应用程序后,我选择“注册”用户选项。这会立即导致InitializeSimpleMembershipAttribute 过滤器执行。过滤器在到达此代码时使站点崩溃:
Database.SetInitializer<UsersContext>(null);
using (var context = new UsersContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
//This line never executes. It is meant to configure my custom user table.
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "ID", "UserName", true);
Exists() 检查抛出 ArgumentException 声明:
无法找到请求的 .Net Framework 数据提供程序。它可能没有安装。
现在我想确定 (1) 我的连接字符串没有问题,并且 (2) 我的提供程序没有问题。为此,我在Exists() 检查之前插入了一段代码。 sn-p 使用新的SqlCeEngine 创建数据库,并调用 Dapper 来设置用户表。该代码工作得很好,就在Exists()再次检查之前。
然后我认为 EF 可能需要一些额外的设置帮助。我尝试在web.config 中替换 EF defaultConnectionFactory:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
我收到的异常仍然没有改变。
我现在想知道 EF 是否需要“特殊”连接字符串才能与 SQL Server CE 一起使用。我将检查here 和here。但乍一看,我不确定这是问题所在。
想法?
【问题讨论】:
标签: asp.net-mvc-3 authentication asp.net-mvc-4 sql-server-ce-4 simplemembership