12

i am writing a simple CMS over ASP.NET MVC framework (for college final project).my problem is with module's data-migration strategy.as each module will update the database schema when it is installed , a database migration mechanism must be implemented in module installation system.ok , data-migration in entity framework is already there (thanks to MS) , but the migration commands run in package manager console.is there any way to run a Data-Migration code Programmatically? any help is very appreciated.

2 Answers 2

21

If you've enabled the automatic migrations in Package Manager Console you can use the following code in an init section of your app (e.g. in SimpleMembershipInitializer):

var migratorConfig = new Migrations.Configuration();
var dbMigrator = new DbMigrator(migratorConfig); 
dbMigrator.Update();

Where Migrations.Configuration is the migration configuration class placed in your project into your namespace (YourProjectNamespace.Migrations).

If you use it programmatically you should at first turn off the EF initializer:

Database.SetInitializer<YourDBContext>(null);

The thing is the programmatic update creates a database if it doesn't exist.

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

2 Comments

I don't have Automatic Migrations enabled and this code still seems to work for me.
Maybe it is question of version. When I posted the answer I was using EF 4.0.
11

This class exposes the EF migrations in code:

System.Data.Entity.MigrateDatabaseToLatestVersion

In EF, migrations work on a whole database though - not modular parts of one.


Just found this class too:

System.Data.Entity.Migrations.DbMigrator

Comments

Your Answer

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.