9

Which is the command to recreate or drop the database when using Entity Framework Migrations, not Initializers?

What should I write on the package manager console?

COMMENT:

I'm looking for some command that gives me the same functionality as Database.SetInitializer<>(new DropCreateDatabaseIfModelChanges<>()); but with the migrations approach.

3 Answers 3

8

You can get the same behavior with Migrations by using automatic migrations.

PM> enable-migrations -EnableAutomaticMigrations

In Configuration.cs in the constructor, make sure automatic migrations and allow data loss are set to true...

public Configuration()
{
    AutomaticMigrationsEnabled = true;
    AutomaticMigrationDataLossAllowed = true;
}

Now whenever your model changes, just execute update-database...

PM> update-database

The schema will be changed to match the models and any existing data in the tables will stay there (unless it's in a renamed or removed column). The Seed method is run after the database is updated so you can further control any changes to the data in there.

Sign up to request clarification or add additional context in comments.

3 Comments

So what if I need to, at this moment, recreate the entire database? Can I do that inside my Seed() method?
If you need to delete the data and reseed it, you can do that inside the Seed method using standard EF logic. If you're deleting lots of rows, you'll probably want to execute truncate commands on the tables directly by calling context.ExecuteStoreCommand()
I'm not getting the point. There isn't a simple way to do it? A single command, a database.Delete() call, etc.?
1

I went into server explorer and manually deleted all the tables. Then went to the project\Migrations folder and deleted all the migration scripts.

Then a plain old Update-Database -Force did what I needed.

Comments

0

In VS2015, I did the following to resolve it: In solution explorer menu-->Show All-->The App_Data folder shows the LocalDb mdf file-->Right click the file and click Delete-->In Package Manage Condsole, run: Update-Database -Force

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.