Basic ASP.
NET Core Web API:
Chapter 1 : MySQL Database
Section 1. Creating a Database for Our Project
Section 2. Basic Code Preparations
Custom Logging in [Link] Core
Repository Pattern with Entity Framework Core
Using Repository for GET Requests
Using Repository for POST, PUT and DELETE Requests
Chapter 2 : Advanced [Link] Core Web API Concepts:
Paging
Filtering
Searching
Sorting
Data Shaping
HATEOAS
Chapter 3 : [Link] Core Application Configuration:
Basic Configuration Concepts
Options Pattern
Options Validation
Configuration Providers
Creating a Custom Configuration Provider
Securing Sensitive Data Locally
Azure Key Vault- Securing Data in Production
Consuming [Link] Core Web API:
Consuming [Link] Core Web API With Angular
Consuming [Link] Core Web API With React
Consuming [Link] Core Web API With [Link]
Blazor WebAssembly HttpClient – Consuming a Web API
A Few Great Ways to Consume RESTful API in C#
Using C# and [Link] to Consume Any REST API
Hosting [Link] Core Web API on different platforms:
Hosting [Link] Core Web API on Windows with IIS
Hosting [Link] Core Web API on Linux OS
Chapter 1 : MySQL Database
Section 1. Creating a Database for Our Project
If you wonder is it hard to manipulate the MySql database by using Workbench, well let
me tell you that it is not that hard at all but quite opposite. Creating schemas, tables,
relations and populating those tables is very easy, once you are familiar with the MySql
Workbench tool.
By following instructions from this post, you will master skills for creating a database,
creating and populating tables, creating relations between those tables and having the
backup of your data. Later on, we will use this database to connect .NET Core project to
it.
THIS ARTICLE IS PART OF THE SERIES
If you want to see all the basic instructions and complete navigation for this tutorial,
please click on the following link: Introduction page for this tutorial.
You can download all the files for this part from here: .NET Core, Angular and
MySQL. Part 1 – Source Code
This post is divided into several parts:
MySQL, Creating Schema Model Diagram
Creating Tables in Schema Model Diagram
Adding Table Relations
Exporting Schema to the Script File
Creating the Database from the Script File
Populating Tables With the Data
Conclusion
MySQL, Creating Schema Model Diagram
After the MySQL server has been installed (we are using 5.7.17 version for this
series), we will start the MySQL Workbench, which will be our tool for creating tables.
When you open the Workbench, click on the existing connection, add a password and
you will be redirected to the database view. Go back on a home screen and click on the
Models icon.
By clicking on the plus button, next to the Models text, we will enter into the model view
which will allow us to create our new schema.
Click twice on the Add Diagram button and you’ll see the screen for creating a schema.
Here we will create our tables and the relationships between them.
Creating Tables in Schema Model Diagram
We will create two tables. Click on the icon for the table and then click again on the work
ground. Repeat this step one more time to create another table. After, click twice on the
first table so we could create columns and give a name to the table.
Name the first table Owner and add the columns:
Double click on the second database table, name it Account and add the columns:
Just want to explain why the value Char (36) for the Primary Keys in our tables. It is
because we will use GUID’s for our keys, and representation of a GUID in MySQL is
the Char (36).
Adding Table Relations
You can save your model by pressing CTRL+S and after that, we will add the relation to
our tables. We will assume that one owner can have multiple accounts (Domestic,
Foreign currency, Savings…), therefore we are seeing relation one-to-many between
owner and account. Taking this knowledge into consideration, we want to connect two
tables by making the OwnerId foreign key in the Account table, so it could provide us
with the relationship between those two tables.
Click on the 1:N relation, one marked in the above picture, then first click on the Account
table and then click on the Owner table. Right after that action, you will see the new
column inside the Account table. That is our foreign key. Double click on that new
column to change its name. Name it OwnerId.
Now if you look all the way down, you will see several tabs. We are currently in the
Columns tab. If you go right and click on the foreign keys tab you will see information
about our foreign key in the Account table.
Let’s change the default settings for the OnUpdate and OnDelete. For the OnUpdate, we
will choose the Cascade option. That means if a row with a primary key, in
the Owner table, is updated automatically, update a row with the corresponding foreign
key in the Account table. Also, for the OnDelete, we will choose the Restrict option.
That’s because we don’t want to allow deleting a row with a primary key, from
the Owner table, without previously removing the row with the corresponding foreign
key. That way we are preserving the referential integrity of our database.
If you look in the Catalog Tree, which is the part of the schema view, you will see “mydb”
as the database name. We don’t want to call our database like that, so to change it,
right-click on mydb and choose edit schema. Give it the name AccountOwner and just
save your model.
Exporting Schema to the Script File
We are finished with the create schema actions. Now, we want to export our database
schema to a script file, which will provide us with a code to create our database with the
tables, by simple executing our generated script.
Click on the File menu, then hover over the Export and choose the Forward Engineering
SQL Create Script. You will see a new window, in which you have to add the name of the
script file and the other options for the generating scripts. In the field “Output SQL Script
File”, write the name of the script, if left blank, you will just view generated script and be
able to copy it but not save it. Also, click on the “Generate DROP Statements Before
Each CREATE Statement” option. This option will drop any existing table, prior to the
creation of a new one with the same name. This way you’ll avoid errors if any table
already exists inside the database while starting the script file.
Click the Next button. You will see the SQL Object Explorer Filter and in that window just
check the first option: Export MySQL Table Objects. Click the Next again. Here you will
notice the way your script looks like. Just click the finish and the script will be exported to
your desired location.
Creating the Database from the Script File
If your database view is still opened, redirect yourself on that view. If it is not open, click
on the home tab, then click the first icon from the top (one with Dolphin on it) and then
click on the Local Instance part to enter the database view.
In the database view, choose the Schemas tab in the Navigator part of the page. There
you will find some default databases created and in that section, your new database will
appear.
Go to the File menu and choose the option Run SQL Script. Select the saved script and
then just click the run button. This will create a database. If you refresh your schemas
view, you will be able to see our database.
Because the account table depends on the owner table, we need to populate the owner
table first and account table next. Right-click on the owner table, choose the first option:
Select Rows – Limit …, and you are going to see the query window.
Populating Tables With the Data
Now we want to populate our tables, and for that open a new SQL tab for executing the
queries.
And execute the code:
INSERT INTO `accountowner`.`owner`
VALUES ('24fd81f8-d58a-4bcc-9f35-dc6cd5641906','John Keen','1980-12-05','61 Wellfield
Road'),
('261e1685-cf26-494c-b17c-3546e65f5620','Anna Bosh','1974-11-14','27 Colored Row'),
('a3c1880c-674c-4d18-8f91-5d3608a2c937','Sam Query','1990-04-22','91 Western
Roads'),
('f98e4d74-0f68-4aac-89fd-047f1aaca6b6','Martin Miller','1983-05-21','3 Edgar
Buildings');
INSERT INTO `accountowner`.`account`
VALUES ('03e91478-5608-4132-a753-d494dafce00b','2003-12-15','Domestic','f98e4d74-
0f68-4aac-89fd-047f1aaca6b6'),
('356a5a9b-64bf-4de0-bc84-5395a1fdc9c4','1996-02-15','Domestic','261e1685-cf26-
494c-b17c-3546e65f5620'),
('371b93f2-f8c5-4a32-894a-fc672741aa5b','1999-05-04','Domestic','24fd81f8-d58a-
4bcc-9f35-dc6cd5641906'),
('670775db-ecc0-4b90-a9ab-37cd0d8e2801','1999-12-21','Savings','24fd81f8-d58a-4bcc-
9f35-dc6cd5641906'),
('a3fbad0b-7f48-4feb-8ac0-6d3bbc997bfc','2010-05-28','Domestic','a3c1880c-674c-
4d18-8f91-5d3608a2c937'),
('aa15f658-04bb-4f73-82af-82db49d0fbef','1999-05-12','Foreign','24fd81f8-d58a-4bcc-
9f35-dc6cd5641906'),
('c6066eb0-53ca-43e1-97aa-3c2169eec659','1996-02-16','Foreign','261e1685-cf26-494c-
b17c-3546e65f5620'),
('eccadf79-85fe-402f-893c-32d3f03ed9b1','2010-06-20','Foreign','a3c1880c-674c-4d18-
8f91-5d3608a2c937');
By executing the code above, we will have our tables populated with the required data.
If you want to back up your data, all you have to do is the following: Click on the Server
menu, choose the Data Export, select your database and below check Export to Self-
Contained File. Choose the destination for your backup file and click Start Export.
Conclusion
That is all for Part 1 of this tutorial. We have learned how to create MySQL schema, how
to create tables and table relationships. Furthermore, we now know how to create
database scripts and to insert data into our tables.
Even though we covered the basics of MySQL, you have enough knowledge to start
creating your own relational database schemas.
Thank you for a reading and check out the next part, where we start diving into
the .NET CORE world.