为什么Entity Framework在删除时不会重新创建我的localdb?

Mik*_*ard 5 c# entity-framework localdb

使用实体框架6使用模型首次设置

  • 未指定连接字符串.
  • 简单的单一类POCO用于模型.

运行应用程序,创建数据库 活泉!

删除App_Data文件夹中的.mdf/.ldf.

运行应用程序,数据库连接错误

为什么不重新创建数据库?

PS尝试过如何为Entity Framework重新创建数据库?但它不起作用.

那么我如何说服EF重新创建数据库(为什么这会很难?)?

Jer*_*rry 10

在DbContext类构造函数中,您可以使用以下值之一来指定运行应用程序时要执行的操作:

        Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
        Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
        Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
Run Code Online (Sandbox Code Playgroud)

尝试在DbContext类中使用其中一个初始值设定项.

  • 我发现其他解决方案每次都不起作用(不知道为什么),但使用`CreateDatabaseIfNotExists`初始化程序解决了这个问题. (2认同)

Ant*_*Chu 8

您可能在Windows资源管理器中删除了MDF文件.SQL Server LocalDb不知道它,错误可能是抱怨无法找到MDF文件.

要正确删除它,可以从Visual Studio中的SQL Server Management Studio或SQL Server对象资源管理器中删除数据库.

或者,您可以在Visual Studio解决方案资源管理器中选择"显示所有文件",在App_Data中找到MDF文件,右键单击以从解决方案资源管理器本身中删除它.Visual Studio似乎做对了,让SQL Server知道这个变化.