diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx b/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx new file mode 100644 index 0000000..a5106d9 --- /dev/null +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx @@ -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 +```` \ No newline at end of file diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx b/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx new file mode 100644 index 0000000..ce2d9a9 --- /dev/null +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx @@ -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 +```` \ No newline at end of file diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/_category_.json b/Documentation/docusaurus/docs/Entity-Framework/Providers/_category_.json new file mode 100644 index 0000000..47ebbbd --- /dev/null +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "5. Providers", + "position": 5, + "link": { + "type": "generated-index", + "description": "Comment utiliser différents fournisseurs ?" + } + } \ No newline at end of file diff --git a/Documentation/docusaurus/docs/Entity-Framework/intro.md b/Documentation/docusaurus/docs/Entity-Framework/intro.md index daeb288..99601d9 100644 --- a/Documentation/docusaurus/docs/Entity-Framework/intro.md +++ b/Documentation/docusaurus/docs/Entity-Framework/intro.md @@ -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.