postgres & mariadb providers
continuous-integration/drone/push Build is passing Details

master
Marc CHEVALDONNE 2 years ago
parent 7b45c24dd9
commit e63509f4f2

@ -0,0 +1,82 @@
---
sidebar_label: '5.2. MariaDB'
sidebar_position: 2
description: "explique comment utiliser le fournisseur MariaDB"
---
# Utilisation du fournisseur MariaDB
*01/02/2023 ⋅ Marc Chevaldonné*
---
:::note Docker
Cette méthode utilise MariaDB à travers un conteneur Docker en local.
Vous devez donc installer Docker au préalable, en suivant ce lien par exemple : [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/)
:::
## Création du conteneur MariaDB en local
Dans un terminal, récupérez l'image docker de mariadb :
```
docker pull mariadb
```
Créez un conteneur à partir de cette image (n'hésitez pas à changer le mot de passe...) :
```
docker run -p 127.0.0.1:3306:3306 --name mdb -e MARIADB_ROOT_PASSWORD=Password123! -e MARIADB_USER=user -e MARIADB_PASSWORD=pwd -e MARIADB_DATABASE=mydb -d mariadb:latest
```
:::note variables d'environnement
N'hésitez pas à changer les variables d'environnement comme le password, le user, le nom de la database, le root password...
```-e MARIADB_ROOT_PASSWORD=Password123!``` permet de changer le mot de passe root
```-e MARIADB_USER=user``` permet de changer le user
```-e MARIADB_PASSWORD=pwd``` permet de changer le user
```-e MARIADB_DATABASE=mydb``` permet de changer le user
:::
Exécutez la commande ```mariadb``` dans le conteneur :
```
docker exec -it mdb mariadb --user root -pPassword123!
```
:::note root password
Le root password donné juste après le ```-p``` est celui défini dans la commande ```docker run```.
:::
## NuGet
Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, dans le projet contenant votre ```DbContext``` et vos entités :
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Tools
- Pomelo.EntityFrameworkCore.MySql
## DbContext
Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseMySql```.
```csharp MyDbContext
public class MyDbContext : DbContext
{
//...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//...
optionsBuilder.UseMySql("server=localhost;port=3306;user=user;password=pwd;database=mydb", new MySqlServerVersion(new Version(10, 11, 1)));
//...
}
}
```
:::note variables
Vous devez bien sûr utiliser les variables définies lors de la commande ```docker run```, ou les variables par défaut si vous ne les avez pas définies.
:::
Pour le reste de votre projet EntityFrameworkCore, aucune différence avec les méthodes présentées précédemment.
## Migrations et création de la base de données
Vous pouvez maintenant créer les migrations et la base de données à l'aide des commandes classiques
(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext````) :
```
dotnet ef migrations add myMigrationName
dotnet ef database update
````

@ -0,0 +1,69 @@
---
sidebar_label: '5.1. Postgres'
sidebar_position: 1
description: "explique comment utiliser le fournisseur Postgres"
---
# Utilisation du fournisseur Postgres
*01/02/2023 ⋅ Marc Chevaldonné*
---
:::note Docker
Cette méthode utilise Postgres à travers un conteneur Docker en local.
Vous devez donc installer Docker au préalable, en suivant ce lien par exemple : [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/)
:::
## Création du conteneur Postgres en local
Dans un terminal, récupérez l'image docker de postgres :
```
docker pull postgres
```
Créez un conteneur à partir de cette image (n'hésitez pas à changer le mot de passe...) :
```
docker run --rm -P -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="1234" --name pg postgres:latest
```
:::note variables d'environnement
N'hésitez pas à changer les variables d'environnement comme le password, le user id, le nom de la database...
:::
## NuGet
Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, dans le projet contenant votre ```DbContext``` et vos entités :
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Tools
- Npgsql.EntityFrameworkCore.PostgreSQL
## DbContext
Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseNpgsql```.
```csharp MyDbContext
public class MyDbContext : DbContext
{
//...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//...
optionsBuilder.UseNpgsql(@"host=localhost;database=postgres;user id=postgres;password=1234;");
//...
}
}
```
:::note variables
Vous devez bien sûr utiliser les variables définies lors de la commande ```docker run```, ou les variables par défaut si vous ne les avez pas définies.
:::
Pour le reste de votre projet EntityFrameworkCore, aucune différence avec les méthodes présentées précédemment.
## Migrations et création de la base de données
Vous pouvez maintenant créer les migrations et la base de données à l'aide des commandes classiques
(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext````) :
```
dotnet ef migrations add myMigrationName
dotnet ef database update
````

@ -0,0 +1,8 @@
{
"label": "5. Providers",
"position": 5,
"link": {
"type": "generated-index",
"description": "Comment utiliser différents fournisseurs ?"
}
}

@ -63,9 +63,9 @@ Ce chapitre s'attardera sur le lien entre le modèle et la base de données. En
* [**2.10.5. : One To Many with data annotations**](/docs/Entity-Framework/Model/Relationships/02_10_05_OneToMany_dataAnnotations) : montre comment une relation d'association *One To Many* est traduite par *EF Core* en utilisant l'*annotation de données*. * [**2.10.5. : One To Many with data annotations**](/docs/Entity-Framework/Model/Relationships/02_10_05_OneToMany_dataAnnotations) : montre comment une relation d'association *One To Many* est traduite par *EF Core* en utilisant l'*annotation de données*.
* [**2.10.6. : One To Many with naming conventions**](/docs/Entity-Framework/Model/Relationships/02_10_06_OneToMany_conventions) : montre comment une relation d'association *One To Many* est traduite par *EF Core* en utilisant les *conventions d'écriture*. * [**2.10.6. : One To Many with naming conventions**](/docs/Entity-Framework/Model/Relationships/02_10_06_OneToMany_conventions) : montre comment une relation d'association *One To Many* est traduite par *EF Core* en utilisant les *conventions d'écriture*.
* [**2.10.7. : One To Many with Fluent API**](/docs/Entity-Framework/Model/Relationships/02_10_07_OneToMany_FluentAPI) : montre comment une relation d'association *One To Many* est traduite par *EF Core* en utilisant la *Fluent API*. * [**2.10.7. : One To Many with Fluent API**](/docs/Entity-Framework/Model/Relationships/02_10_07_OneToMany_FluentAPI) : montre comment une relation d'association *One To Many* est traduite par *EF Core* en utilisant la *Fluent API*.
1. *Schemas and migrations* : 3. *Schemas and migrations* :
Le but de ce chapitre sera de vous montrer comment garder votre modèle et votre base de données synchronisés. Le but de ce chapitre sera de vous montrer comment garder votre modèle et votre base de données synchronisés.
2. *Querying (LINQ to SQL) and saving data* : 4. *Querying (LINQ to SQL) and saving data* :
*Language INtegrated Query* (LINQ) est un outil de requête sur collections et sa version LINQ to SQL vous permet de passer très facilement à un système de requêtes sur les bases de données. *Language INtegrated Query* (LINQ) est un outil de requête sur collections et sa version LINQ to SQL vous permet de passer très facilement à un système de requêtes sur les bases de données.
Les requêtes LINQ sont automatiquement traduites en requêtes SQL, vous évitant ainsi d'avoir à écrire vos requêtes vous-mêmes. Elles sont dès lors beaucoup plus lisibles et faciles à écrire. Les requêtes LINQ sont automatiquement traduites en requêtes SQL, vous évitant ainsi d'avoir à écrire vos requêtes vous-mêmes. Elles sont dès lors beaucoup plus lisibles et faciles à écrire.
Ce chapitre présente comment charger des données, réaliser du filtrage, de manière synchrone ou asynchrone, etc. Ce chapitre présente comment charger des données, réaliser du filtrage, de manière synchrone ou asynchrone, etc.

Loading…
Cancel
Save