From 35f78e17f67975d94493a6909ffaa6ee7463884a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 18:59:22 +0300 Subject: [PATCH] Added db migrations --- docs/en/Tutorials/Todo/Index.md | 20 +++++++++++++++++- .../Tutorials/Todo/todo-efcore-migration.png | Bin 0 -> 9490 bytes 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 docs/en/Tutorials/Todo/todo-efcore-migration.png diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 4f2d4942be..7b153f55ea 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -99,7 +99,25 @@ public static void ConfigureTodoApp(this ModelBuilder builder) We've mapped `TodoItem` entity to a `TodoItems` table in the database. -**TODO: DB MIGRATIONS** +The startup solution is configured to use Entity Framework Core [Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations). Since we've changed the database mapping configuration, we should create a new migration and apply changes to the database. + +Open a command-line terminal in the directory of the *TodoApp.EntityFrameworkCore.DbMigrations* project and type the following command: + +````bash +dotnet ef migrations add Added_TodoItem +```` + +This will add a new migration class to the project: + +![todo-efcore-migration](todo-efcore-migration.png) + +You can apply changes to the database using the following command, in the same command-line terminal: + +````bash +dotnet ef database update +```` + +> If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that the `TodoApp.Web` is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. Now, we can use ABP repositories to save and retrieve todo items, as we'll do in the next section. diff --git a/docs/en/Tutorials/Todo/todo-efcore-migration.png b/docs/en/Tutorials/Todo/todo-efcore-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..df370aebcf44b25ad02ab77df496cc6790690f72 GIT binary patch literal 9490 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