Question

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?)?

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top