Load Entity Framework schemas into an Atlas project.
- Declarative migrations - use a Terraform-like
atlas schema apply --env ef
command to apply your EF schema to the database. - Automatic migration planning - use
atlas migrate diff --env ef
to automatically plan a migration from the current database version to the EF schema.
Windows:
Use PowerShell to download the file:
Invoke-WebRequest https://release.ariga.io/atlas/atlas-windows-amd64-latest.exe -OutFile atlas.exe
Then move the Atlas binary to a file location on your system PATH.
macOS + Linux:
curl -sSf https://atlasgo.sh | sh
See atlasgo.io for more installation options.
Make sure to have a tool manifest available in your repository or create one using the following command:
dotnet new tool-manifest
Install the AtlasEF
package from the command line:
dotnet tool install atlas-ef
Let's check if the tool is installed correctly:
dotnet atlas-ef --version
By default, this tool will scan for implementation of the DbContext class in the current project and will generate a database schema based on it.
This tool does not require a database connection, but it does need Database Providers restored.
In your project directory, create a new file named atlas.hcl
with the following contents:
data "external_schema" "ef" {
program = [
"dotnet",
"atlas-ef",
]
}
env {
name = atlas.env
src = data.external_schema.ef.url
dev = "docker://mysql/8/dev" # list of dev dbs can be found here: https://atlasgo.io/concepts/dev-database
migration {
dir = "file://atlas-migrations"
}
format {
migrate {
diff = "{{ sql . \" \" }}"
}
}
}
Once you have the provider tool and Atlas configured, you can use them to manage your database schema.
You can use the atlas schema apply
command to plan and apply a migration on your database from
your current EF schema. This works by inspecting the target database schema and comparing it to the
EF schema, creating a migration plan. Atlas will prompt you to confirm the migration plan
before applying it to the database.
Note: For Windows users, you need to use the
atlas.exe
command instead ofatlas
.
atlas schema apply --env ef -u "mysql://root:password@localhost:3306/mydb"
The -u
flag accepts the URL to the
target database.
Atlas supports a versioned migration
workflow, where each change to the database is versioned and recorded in a migration file. You can use the
atlas migrate diff
command to automatically generate a migration file that will migrate the database
from its latest revision to the current EF schema.
Note: For Windows users, you need to use the
atlas.exe
command instead ofatlas
.
atlas migrate diff --env ef
The provider supports the following databases:
- SQL Server
- MySQL
- PostgreSQL
- SQLite
To learn more about the EF Core integration, check out the documentation.
This project is licensed under the Apache License 2.0.