Table des matières

Entity Framework Core

Installation

Pour débuter, il faut installer .NET Core sur le poste de travail. Dans notre cas, c'est macOS.

On peut aussi installer Visual Studio Code.

Installer un serveur PostgreSQL (sur Mac on peut utiliser Postgres.app).

Démarrer le projet .NET

On va utiliser yeoman pour construire un projet de départ. Installer Yeoman avec npm:

# npm intall yeoman -g

Une fois yeoman d'installer, il faut ajouter le generator aspnet.

Une fois le generator d'installé, il faut créer un répertoire pour le projet et faire:

$ yo aspnet

Choisir le projet Web API Application.

Démarrer le projet

Simplement pour s'assurer que le projet fonctionne bien, on peut dans le terminal (intégré à Visual Studio Code), exécuter:

$ dotnet build

Ce qui compile le projet. Donc, s'il n'y a aucune erreur, tout va bien. Ensuite, on peut le démarrer:

$ dotnet run

Une fois démarré, on peut accéder à l'API en allant sur http://localhost:5000/api/values.

Installer des dépendances supplémentaires

Fabriquer une classe.

Ajouter une dépendance à PostgreSQL pour EntityFramework dans project.json:

"Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.0-*"

Comme on peut voir dans le fichier project.lock.json, sous la mention Npgsql.EntityFrameworkCore.PostgreSQL/1.0.0, les deux dépendances sont installés pour Entity Framework Core:

"Microsoft.EntityFrameworkCore": "1.0.0",
"Microsoft.EntityFrameworkCore.Relational": "1.0.0",

Création du modèle

Context

using Microsoft.EntityFrameworkCore;
 
namespace EFCoreWebAPI
{
    public class WeatherContext: DbContext
    {
 
        public WeatherContext(DbContextOptions<WeatherContext> options): base(options) { }
 
        public WeatherContext() { }
 
        public DbSet<WeatherEvent> WeatherEvents { get; set; }
 
        public DbSet<Reaction> Reactions { get; set; }
 
        public DbSet<Comment> Comments { get; set; }
 
    }
}

Migration

Ajouter dans le fichier project.json, la dépendance:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

Ensuite, dans la section tools, on ajoute la section Microsoft.EntityFrameworkCore.Tools :

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    }

Ensuite on a accès aux outils EF avec :

$ dotnet ef