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.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*.
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.
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.
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.

Loading…
Cancel
Save