我正在使用 VS2012、SQLExplress、最新的 .net 版本、代码优先实体框架和迁移构建一个简单的 webb 应用程序。我从 VS2012 中的标准 MVC4 模板构建,默认使用新的简单成员资格。
我的问题是我无法让 Websecurity 类使用我创建的数据库。我在 Glabal.asax.cs 中使用此代码:
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(
"DefaultConnection",
"UserProfile",
"UserId",
"UserName",
autoCreateTables: true);
我也尝试在迁移种子方法中运行此代码段,但结果相同。
我的连接字符串看起来像这样
<add name="DefaultConnection" connectionString="Data Source=localhost\SQLEXPRESS;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" providerName="System.Data.SqlClient" />
当我使用autoCreateTables: true
参数运行初始化程序时,初始化程序会创建一个仅在 VS2012 中可见的新连接,如下所示。
这张图片显示了一个名为 SecurityConnection2 的连接,因为我试图强制 websecurity 使用另一个连接字符串,但行为与使用 DefaultConnection 的行为相同。如您所见,它在这个新连接中创建了所有表,我无法在数据库中的任何位置找到这些表。
如果我改为使用autoCreateTables: false
初始化程序,则会抛出一个错误,指出 UserProfile 表不存在。
在我读过的所有示例和教程中,这只是开箱即用,但我无法让它工作。
可能有一个简单的解决方案,但我看不到它,我将不胜感激这里的任何帮助。