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

时间:2014-02-24 19:58:40

标签: c# entity-framework localdb

使用模型首次使用

设置实体框架6
  • 未指定连接字符串。
  • 模型的简单单一类POCO。

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

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

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

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

P.S。尝试做How to re-create database for Entity Framework?,但它不起作用。

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

2 个答案:

答案 0 :(得分:10)

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

        Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
        Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
        Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());

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

答案 1 :(得分:7)

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

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

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