Search code examples
.netentity-framework-6fluent-migrator

Integrating Code-First EF6 with Older Frameworks


Working on a new feature using EF6 with code first migrations made my development super awesome. Now that I'm passed the prototype phase, I need to integrate this process with my larger code base & change control processes.

Migrations are awesome, and I'd love to use them if I was in a different situation, but the database code is currently executed in a separate change control process when I release code. Additionally, the schema is version controlled using a database project from Visual Studio 2010.

Is there a way to mock the __migrationHistory table so when I deploy, I will not get any errors from EF6? Additionally, is there a way to script the output of a fluent migration to a file output for a DBA to execute? I see that I could manually create row entries, but I'm unsure what is stored in the Model binary field and if it might just be the actual T-SQL underneath.


Solution

  • A few notes for future people looking to do this.

    You can write the EF6 migrations to a SQL file using Update-Database -Script option.

    This helps when you are doing SQL updates separately than code.

    Secondly, if you mark your fields as [DataMember(IsRequired = false)] and add code in the OnModelCreating override function to ignore it, you can continue using EF6 without the database completely in sync:

    public class DotNetObject
    {
       [DataMember(IsRequired = false)]
       public int ColumnName { get; set; }
    }
    
     protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
     {
                    modelBuilder.Entity<DotNetObject>().Ignore(sc => sc.ColumnName);
        modelBuilder.Entity<DotNetObject>().Ignore(sc => sc.ColumnName);
     }