How can I disable code first migrations

后端 未结 5 1625
醉话见心
醉话见心 2020-11-30 23:05

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 m

相关标签:
5条回答
  • 2020-11-30 23:20

    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);
        }
    
    0 讨论(0)
  • 2020-11-30 23:20

    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.

    0 讨论(0)
  • 2020-11-30 23:36

    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.

    0 讨论(0)
  • 2020-11-30 23:38

    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
    
    0 讨论(0)
  • 2020-11-30 23:41

    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.
    0 讨论(0)
提交回复
热议问题