How can I disable code first migrations

Entity FrameworkMigrationCode First

Entity Framework Problem Overview


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?

Entity Framework Solutions


Solution 1 - Entity Framework

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);
    }

Solution 2 - Entity Framework

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.

Solution 3 - Entity Framework

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.

Solution 4 - Entity Framework

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.

Solution 5 - Entity Framework

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionStan HargroveView Question on Stackoverflow
Solution 1 - Entity FrameworkSarath RachuriView Answer on Stackoverflow
Solution 2 - Entity FrameworkkarlingenView Answer on Stackoverflow
Solution 3 - Entity FrameworkEric J.View Answer on Stackoverflow
Solution 4 - Entity FrameworkEpisodexView Answer on Stackoverflow
Solution 5 - Entity FrameworkNoWarView Answer on Stackoverflow