在一个测试项目中,我使用 SimpleMembershipProvider 和 Entity Framework 5。测试项目使用 localdb 创建了一个数据库,但它突然停止工作。我不确定发生了什么变化,但我很困惑。这几乎是样板:
private static void InitializeSimpleMembership()
{
Database.SetInitializer<TestEfhContext>(null);
using (var context = new TestEfhContext(ConnectionString))
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
WebSecurity.InitializeDatabaseConnection(ConnectionString, "Users", "UserID", "UserName", autoCreateTables: true);
}
}
当ConnectionString
不是 app.config 中的键时,它应该创建一个该名称的数据库,并为用户模型初始化它。如果 localdb 数据库不存在,则成功创建它。WebSecurity.InitializeDatabaseConnection
现在失败了
`Connection string "testdb" was not found.`
在进行故障排除时,我尝试更改连接字符串以使用实际的连接字符串而不是别名:
WebSecurity.InitializeDatabaseConnection(context.Database.Connection.ConnectionString,
"Users", "UserID", "UserName", autoCreateTables: true);
这将解析为到 localdb 服务器的完整连接字符串:
Data Source=(localdb)\\v11.0;Initial Catalog=testdb;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE'
我认为这至少会奏效。不是这样:
Connection string "Data Source=(localdb)\v11.0;Initial Catalog=testdb;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE" was not found.
有任何想法吗?这是我使用 EF 的第一个项目,所以其中一些对我来说仍然有点神秘。当我第一次设置测试项目时,它就像魔术一样工作,我无法理解可能发生了什么变化。初始化程序甚至不能使用真正的连接字符串,这似乎特别奇怪。实际的应用程序仍然可以正常工作,我现在无法让测试项目正常工作。