29

I'm having ASP.NET MVC 3 project that uses Entity Framwork 4.3 and its migrations. Now I want Entity Framework to create a database for me using migrations that I have already. When I trying to run Update-Database script it gives me the following:

Update-Database -Verbose -ProjectName AssemblyWithMigrations -StartUpProjectName WebProjectAssembly No migrations configuration type was found in the assembly '/* my name of assembly */'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).

But, when I'm trying to run Enable-Migrations I see following:

Migrations have already been enabled in project 'AssemblyWithMigrations '. To overwrite the existing migrations configuration, use the -Force parameter.

So, the problem is EF trying to resolve current migration version to update database, I suppose. But database doesn't exist and it obviously fails.

The question is: how to use EF migrations for creating database if it doesn't exist? Or, what is the right way to do that using Nuget console?

In summary, what I want: 1. run command (perhaps update-database) that will create database using my web.config file 2. all migrations will be applied on the created database in their creation order.

Thanks. :)

2
  • 2
    I didnt think migrations was for creating databases only for updating them. Commented May 23, 2012 at 11:17
  • 1
    If the database doesn't exist, Update-Database will create it automatically and apply each migration. Do you have any additional information? Getting both "No migrations configuration type was found" and "Migrations have already been enabled" should never happen for the same project. Commented Apr 29, 2013 at 22:16

3 Answers 3

61

I realise this is an old question, but what the hell....

To enable migrations to create the initial database I've found the following works well.

  1. Delete your database from within SQL Server Object Explorer
  2. Delete all your existing migrations from within the Migrations folder.
  3. In Package-Management-Console type "Add-Migration InitialCreate"

    [optional, depending on your database initializer]

  4. In Package-Management-Console type "update-database"

This will give you a single migration script which will take you from "no database" to having a database that matches your current model.

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

7 Comments

Thanks for your answer. I can't test the solution right now, but I'm sure it will work.
Step 4 would be: In PM Console, type "Update-Database", to actually create the database.
[Edited] Quite correct - depending on your database initializer this step may be required too. I use a MigrateDatabaseToLatestVersion initializer.
I was going to edit your answer to include links to the documentation for Add-Migration and update-database but I cannot find them! The closest I found was Anders Abel's blog post where he collects the output from running package manager console commands like get-help Add-Migration -detailed
this works only with one db context and fails if there is more than one, how do we force the second db to be updated?
|
6

Using Migrations is very useful but at times I have found it's better to use the following statements when working with databases.

Database initialization strategies: use any of the commented statements relevant to you.

public DataContext(): base("DefaultConnection") 
{
  // Database.SetInitializer<DataContext>(new CreateDatabaseIfModelChanges<DataContext>());
  // Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());                                                            
  // Database.SetInitializer<DataContext>(new DropCreateDatabaseAlways<DataContext>());
}                                                                                                                                                                                                                                                   

Comments

0

To create a database using code-first migrations in Entity Framework using the Package Manager Console, you can follow these steps:

1- Open Visual Studio and open the project in which you have defined your DbContext and entity classes.

2- Open the Package Manager Console by going to View -> Other Windows -> Package Manager Console.

3- Enable Migrations with a Specific DbContext:

Enable-Migrations -Context YourDbContextName

4- Add Initial Migration for a Specific DbContext:

Add-Migration InitialCreate -Context YourDbContextName

5- Update Database for a Specific DbContext:

Update-Database -Context YourDbContextName

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.