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;
}