代码首次尝试创建数据库时出现异常

Dan*_*Dan 24 c# asp.net-mvc entity-framework entity-framework-4 ef-code-first

我已经创建了一个新的ASP.NET MVC 4应用程序,并希望它首先使用代码.但是,如果数据库文件不存在,它似乎最初不会创建数据库文件.如果我从App_Data文件夹中删除.mdf文件,那么当应用程序尝试访问数据库时,我会收到以下异常:

System.Data.SqlClient.SqlException: Cannot attach the file '<path-to-db-file>.mdf' as database '<my-db-file-name>'.
Run Code Online (Sandbox Code Playgroud)

如果我在调试器中的应用程序中运行它,那么我可以看到在调用LazyInitializer.EnsureInitialized时在InitializeSimpleMembershipAttribute :: OnActionExecuting方法中发生异常.被捕获的例外是:

[System.Reflection.TargetInvocationException]   {"Exception has been thrown by the target of an invocation."}   System.Reflection.TargetInvocationException
Run Code Online (Sandbox Code Playgroud)

内部例外:

[System.InvalidOperationException]  {"The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588"} System.InvalidOperationException
Run Code Online (Sandbox Code Playgroud)

然后我将上面提到的第一个例外作为内部例外.

我有什么想法我做错了吗?

更新

我刚刚尝试使用全新的MVC4应用程序.我可以通过执行以下操作来复制它:

  1. 在VS向导中创建MVC应用程序.
  2. 首次运行应用程序并转到登录页面(注意现在生成mdf文件).
  3. 删除mdf文件,然后返回登录页面.现在抛出异常.

mor*_*nlf 9

遇到了同样的问题,在这里找到了我的解决方案.所有你需要做的就是通过打开VS开发人员命令提示符并输入(不带引号)来停止LocalDb:

"sqllocaldb.exe stop v11.0"

"sqllocaldb.exe删除v11.0"

下次EF将重新生成文件以及db.

  • LocalDB实例可能具有其他名称.运行`sqllocaldb info`将列出所有现有的LocalDB实例. (2认同)

Wil*_*ang 0

您必须停止 IISExpress 实例并再次重新启动它(通过在 Visual Studio 中按 F5)。然后您将能够再次创建数据库。