Using Entity Framework 6 using a model first setup with

  • No connection string specified.
  • Simple single class POCO for model.

Run application, database created. Woot!

Delete .mdf/.ldf in App_Data folder.

Run application, database connection error.

Why did it not recreate the database?

P.S. Tried doing How to re-create database for Entity Framework? but it doesn't work.

So how do I convince EF to recreate the database (and why is this dang hard?)?

有帮助吗?

解决方案

You likely deleted the MDF file in Windows Explorer. SQL Server LocalDb doesn't know about it and the error is probably complaining about not being able to locate the MDF file.

To delete it properly, you can delete the database from SQL Server Management Studio or SQL Server Object Explorer in Visual Studio.

Alternatively, you could have selected "Show All Files" in Visual Studio Solution Explorer, located the MDF file in App_Data, right-clicked to delete it from within Solution Explorer itself. Visual Studio seems to do the right thing and let SQL Server know about this change.

其他提示

In your DbContext class constructor, you can use one of the following values to specify what to do when you run your app:

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

Try using one of these initializers in your DbContext class.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top