Prerequisites
- Visual Studio 2015 update 3
- .NET Core 1.0
- SQL Server 2014 / 2016 Server Management Studio with a default localdb
- Postgresql
Contents
- Create Database:
samplecoreEF
- Create an ASP.NET Core Web Application:
Samples.AspCoreEF
- Add Class Library Core to the solution:
Samples.AspCoreEF.DAL.EF
- Create model classes:
Task
and Person
- Add Context:
TaskSystemDbContext
- Register the context class with Dependency Injection
- Auto-Create the database
- Add Web API controller and test using Postman
Background
Have some knowledge in ASP.NET and Entity Framework.
Create Database: samplecoreEF
Create a new database “sampleCoreEF
” in PostgreSQL:
Create a new database “sampleCoreEF
” in SQL server 2016:
Create an ASP.NET Core Web Application: Samples.AspCoreEF
We open Visual Studio > File > New Project> Select “ASP.NET Core Web Application” > Enter Name “Samples.AspCoreEF
” & Location > OK.
Then, we select the temple “Web Application” and we confirm the choice by clicking on OK.
Add Class Library Core to the Solution: Samples.AspCoreEF.DAL.EF
Now, we take a look at Samples.AspCoreEF
project structure, as shown in the screenshot, given below:
The project Samples.AspCoreEF.DAL.EF
will contain our EntityFramework models, migrations, context … (This is the reason for the name DAL: Data Access Layer).
Create Model Classes: Task and Person
We will add to the Samples.AspCoreEF.DAL.EF
project the Models folder that will contain two models: Person.cs and Task.cs.
In project.json, we install the Entity Framework Core package for the database provider from NuGet Package Manager Console in Visual Studio 2015.
So “project.json” should have this content to be sure that we have added the right version:
Add Context: TaskSystemDbContext
We have to add a new folder called EntityFramework where we will add our context like below:
So we will have this structure:
Register the Context Class with Dependency Injection
We will work now in the ASP.NET Web Application to be able to register our context.
We will start by adding Samples.AspCoreEF.DAL.EF
as a reference to Samples.AspCoreEF
.
After we will add needed references to generate our database as before, so, our project.json will have this look:
In the Startup.cs, we will add two blocks to show you how we can register context
class in two different ways: So in this method:
public void ConfigureServices(IServiceCollection services)
After:
services.AddMvc();
We will add this block related to the connection to the SQL Server Database.
We will add this block related to the connection to the SQL Server Database:
var sqlconnection = @"Server=(localdb)\v11.0;Database=samplecoreEF;Trusted_Connection=True;";
services.AddDbContext<TaskSystemDbContext>
(dbcontextoption => dbcontextoption.UseSqlServer(sqlconnection));
sqlconnection
is a hardcoded string
and we use UseSqlServer
to connect to the database.
But, it’s better to add this string
in configuration file, before we can add these string
in web.config but in Core, this file doesn’t exist anymore but we can use: appsettings.json file where you can add all settings related to your web application so:
sqlconnection
is a hardcoded string
and we use UseSqlServer
to connect to the database.
But, it’s better to add this string
in configuration file, before we can add these string
in web.config but in Core, this file doesn’t exist anymore but we can use: appsettings.json file where you can add all settings related to your web application as shown below:
So we will call it in Startup.cs in this way:
var connectionString = Configuration["DbContextSettings:ConnectionString"];
services.AddDbContext<TaskSystemDbContext>(
opts => opts.UseNpgsql(connectionString)
);
Now, we will create our database:
Tools->NuGet Package Manager and then we click on Package Manager Console menu:
Type Add-Migration CoreMigration
and enter:
And we will have Migration folder added in the solution:
And if we check the databases, we will find that tables are added automatically.
And if the database exists, we use Update-Database.
Sometimes, we get some error like below:
So, to resolve it, we have to restart Visual Studio as an administrator and enable the migration.
PM> Enable-Migrations
And if you get this message, you have to update the PowerShell version:
Add Web API Controller and Test using Postman
Now, we will add new API Controller called PersonController
.
And test your API using Postman.
References