Stan Hargrove
Stan Hargrove

Reputation: 981

How can I disable code first migrations

I have a code-first entity model in EF5. But I want to manage the database changes manually -- I do not want EF to modify my existing database and all its data. But when I make parallel changes in the EF mapping and in the database, EF refuses to operate properly telling me I need to use code first migration. How do I turn this off?

Upvotes: 98

Views: 112445

Answers (5)

NoWar
NoWar

Reputation: 37633

I just resolved this "issue" by

  1. Deleting table "_MigrationHistory" from the database.
  2. Deleting "Migrations" folder form the project.
  3. Updating EDMX file.
  4. Clean project & rebuild it.

The config of my environment is following

1. Visual Studio 2017 15.8.2
2. ASP NET MVC project
3. .NET Framework 4.6.1
4. Entity Framework 6.2.0

Upvotes: 2

karlingen
karlingen

Reputation: 14625

So the most complete answer that I have found is this:

  1. Delete Migrations folder inside your project.
  2. Set Database.SetInitializer<DatabaseContext>(null); inside your DatabaseContext initializer.
  3. Delete the table __MigrationHistory inside your database. For EF6+ the table is located under Tables but for earlier versions it is located under System Tables.
  4. Build and run.
  5. Profit.

Upvotes: 49

Sarath Rachuri
Sarath Rachuri

Reputation: 2116

set the Database.SetInitializer to null.

public class DatabaseContext: DbContext
{
    //the base accepts the name of the connection string provided in the web.config as a parameter
    public DatabaseContext()
        : base("DatabaseContext")
    {
        //disable initializer
        Database.SetInitializer<DatabaseContext>(null);
    }

Upvotes: 113

Episodex
Episodex

Reputation: 4559

If you already used Migrations then changing only Initializer won't help. You need to go to Management Studio, open your database tables, go to System Tables folder and remove __MigrationHistory table that is located there (for EF6 and above, it's located directly under Tables). This will disable Migrations for good.

Upvotes: 26

Eric J.
Eric J.

Reputation: 150108

If you want to completely turn off migrations:

https://stackoverflow.com/a/9709407/141172

However, I found it better to keep code first migrations enabled, but use the -Script option to have EF create a DB change script for me that I can apply to each database (development, QA, Production) manually:

Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject

That way EF will create the change script for me, and I still have full control over changes being applied. I version the change scripts like any other source code.

Upvotes: 29

Related Questions