From 1755ff75a5443a36206b4d000a08b72ece2f66f5 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Mon, 8 Apr 2019 16:12:01 +0300 Subject: [PATCH] Add database creation section to Microservice-Demo document. --- docs/en/Samples/Microservice-Demo.md | 26 ++++++++++++++++-- ...vice-sample-update-database-authserver.png | Bin 0 -> 6526 bytes ...ervice-sample-update-database-products.png | Bin 0 -> 6475 bytes 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 docs/en/images/microservice-sample-update-database-authserver.png create mode 100644 docs/en/images/microservice-sample-update-database-products.png diff --git a/docs/en/Samples/Microservice-Demo.md b/docs/en/Samples/Microservice-Demo.md index 55a60dca89..4edebfbe03 100644 --- a/docs/en/Samples/Microservice-Demo.md +++ b/docs/en/Samples/Microservice-Demo.md @@ -116,11 +116,29 @@ To be able to run the solution from source code, following tools should be insta * Run `dotnet restore` from the command line inside the `samples\MicroserviceDemo` folder. * Build the solution in Visual Studio. -#### Restore Databases +#### Create Databases -Open `MsDemo_Identity.zip` and `MsDemo_ProductManagement.zip` inside the `samples\MicroserviceDemo\databases` folder and restore to the SQL Server. +MongoDB database is created dynamically, however you need to create database schemas for SQL server databases. The solution is configured to use Entity Core Code First migrations, so you can easily create databases. -> Notice that: These databases have EF Core migrations in the solution, however they don't have seed data, especially required for IdentityServer4 configuration. So, restoring the databases is much more easier. +There are two SQL server databases in this solution. + +##### MsDemo_Identity Database + +* Right click to the `AuthServer.Host` project and click to the `Set as startup project`. +* Open the **Package Manager Console** (Tools -> Nuget Package Manager -> Package Manager Console) +* Select `AuthServer.Host` as the **Default project**. +* Run `Update-Database` command. + +![microservice-sample-update-database-authserver](../images/microservice-sample-update-database-authserver.png) + +##### MsDemo_ProductManagement + +- Right click to the `ProductService.Host` project and click to the `Set as startup project`. +- Open the **Package Manager Console** (Tools -> Nuget Package Manager -> Package Manager Console) +- Select `ProductService.Host` as the **Default project**. +- Run `Update-Database` command. + +![microservice-sample-update-database-products](../images/microservice-sample-update-database-products.png) #### Run Projects @@ -136,6 +154,8 @@ Run the projects with the following order (right click to each project, set as s * BackendAdminApp.Host * PublicWebSite.Host +When you run projects, they will add some initial demo data to their databases. + ## A Brief Overview of the Solution The Visual Studio solution consists of multiple projects each have different roles in the system: diff --git a/docs/en/images/microservice-sample-update-database-authserver.png b/docs/en/images/microservice-sample-update-database-authserver.png new file mode 100644 index 0000000000000000000000000000000000000000..689019b587e969b75d1d56a502c82b956b875f7e GIT binary patch literal 6526 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 EAD&H?cmMzZ literal 0 HcmV?d00001 diff --git a/docs/en/images/microservice-sample-update-database-products.png b/docs/en/images/microservice-sample-update-database-products.png new file mode 100644 index 0000000000000000000000000000000000000000..b49c2a8f8eff96d0c2fd144630b44fd3a5e38c3b GIT binary patch literal 6475 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�T#imp=82iGb<)gv@grU@4pHLcgf6ICQDAG!Yx{DF5uz zAQ;(pFvO_BvK=Af4!NBm~qI)q7J~+>Hi-|e)plp47dm>kz!+L`@g03Z4UxhSTrH?bj2a_!as=Pzxqe+ e{xAOk&;-%}Lhmv=r+4$;b)T#1fGU)2!u|_VV~j5V literal 0 HcmV?d00001