Using EF6 code-first migrations, I am able to successfully save models and create new migrations for them. However, my DbContext class is in a Sharp.Data
project, the actual (Sql CE) database lives under the Sharp.Server
project bin folder, and my models live in a Sharp.Common
project.
When I run add-migration -ProjectName Sharp.Data Migration3
(pointing to Sharp.Data
as that is where the DbContext is), it successfully runs and identifies changes made to the models in the Sharp.Common
project. However, when I run update-database -ProjectName Sharp.Data
, it updates/creates/migrates/seeds a new database located under the bin folder of my Sharp.Data
project, instead of Sharp.Server
, where ultimately the application reads the data from.
Is there a way to do this? To have migrations generate/update a database that exists somewhere else besides its own project file? This may be a relic of using SQL CE, but it's my database of choice for various reasons.
@JotaBe's answer is correct. But to summise, you need to do the following:
You can pass extra parameters to
update-database
that allow to:Full syntax of
Update-Database
:To specify a connection string (which points to the correct folder in your project):
-StartUpProjectName
and-ConnectionStringName
, to specify a project that contains a .config file with a connection string with the provided name (1st syntax)-ConnectionString
, to specify directly the connection string (2nd syntax)To create a SQL script that you can apply directly to the DB using other tool:
-SourceMigration
: current migration in the destination DB-TargetMigration
: migration to update to, and-Script
: to generate a script taht you can apply by hand