Mike Ward
Mike Ward

Reputation: 3321

Why does Entity Framework not recreate my localdb when deleted?

Using Entity Framework 6 using a model first setup with

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

Upvotes: 6

Views: 2684

Answers (2)

Anthony Chu
Anthony Chu

Reputation: 37520

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.

Upvotes: 10

Jerry
Jerry

Reputation: 6557

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.

Upvotes: 10

Related Questions