Reputation: 3111
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. :)
Upvotes: 29
Views: 68341
Reputation: 1410
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
Upvotes: 0
Reputation: 61
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>());
}
Upvotes: 6
Reputation: 1656
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.
In Package-Management-Console type "Add-Migration InitialCreate"
[optional, depending on your database initializer]
This will give you a single migration script which will take you from "no database" to having a database that matches your current model.
Upvotes: 61