Ajouter Postgres dans Projet ASP Net Core

Installer les Packages Nuget

Il faut ajouter le Nuget correspondant à Postgres dans le projet avec les commandes suivantes

Install-Package Microsoft.EntityFrameworkCore.Design
Install-Package Npgsql.EntityFrameworkCore.PostgreSQL

Vérifier que l'on a un DBContext

Il faut au moins un model qui dérive de DBContext nécessaire.

public partial class PEActionContext : DbContext
{
  public PEActionContext()
  {
  }

  public PEActionContext(DbContextOptions<PEActionContext> options)
  : base(options)
  {
  }

  public virtual DbSet<Agence> Agences { get; set; }

..... etc

En ajoutant un DbSet on rends la table disponible.

Fichier Startup.cs

Dans la méthode ConfigureServices ajouter :

services.AddDbContext<PEActionContext>(options => 
                                       options.UseNpgsql(
                                         @$"Server={Configuration["DBHost"]};Port=5432;Database={Configuration["DBDatabase"]};Username={Configuration["DBAdmin"]};Password={Configuration["DBPassword"]}")
                                      );

Cela rajoute au moteur d'injection le DbContext pour qu'il puisse ensuite être utilisé dans le code.

Pour l'utiliser depuis un Controller

Il faut pour cela initialiser le constructeur du Controller avec l'objet DBContext correspondant, dans notre exemple PEActionContext que nous avons déclaré dans le service de Startup.cs

Si le contructeur n'exite pas on le crée avec pour paramètre un objet de type PEActionContext .

C'est le moteur d'injection de ASP Net Core qui se chargera de créer l'instance de l'objet dans le paramètre du constructeur.

[Route("api/[controller]")]
    public class AgencesController : ControllerBase
    {
        private PEActionDbContext _peActionDbContext;
        public AgencesController(PEActionDbContext peActionDbContext)
        {
            _peActionDbContext = peActionDbContext;
        }

 


Revision #4
Created Thu, Apr 22, 2021 8:48 AM by Nelson
Updated Fri, Apr 23, 2021 8:56 AM by Nelson