Comprendre EF Core
Entity Framework Core (EF Core) est un mappeur objet-relationnel (ORM). Un ORM fournit une couche entre le modèle de domaine que vous implémentez dans le code et une base de données. EF Core est une API d’accès aux données qui vous permet d’interagir avec la base de données en utilisant des objets CLR traditionnels (POCO) .NET et la syntaxe LINQ (Language Integrated Query) fortement typée.
Dans EF Core, la base de données est abstraite derrière les objets CLR traditionnels .NET. EF Core gère l’interaction directe avec la base de données sous-jacente. Cette API vous permet de passer moins de temps à écrire du code SQL et à traduire les demandes vers et depuis la base de données, et plus de temps sur les tâches importantes de logique métier.
Avec EF Core, vous pouvez :
- Charger des données en tant qu’objets C# (entités).
- Ajouter, modifier et supprimer des données en appelant des méthodes sur les entités.
- Mapper plusieurs tables de base de données à une seule entité C#.
- Gérer les problèmes liés à la concurrence qui se produisent lorsque plusieurs utilisateurs essaient simultanément de mettre à jour le même enregistrement.
- Utilisez la syntaxe LINQ (System.Linq) pour interroger la base de données.
- Accéder à plusieurs bases de données, notamment SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL, etc.
- Générer votre modèle de domaine à partir d’une base de données existante.
- Gérer le schéma de votre base de données en fonction de votre modèle de domaine.
- Valider les modifications apportées aux graphes d’objets complexes, profonds ou larges d’entités associées en utilisant un seul appel de méthode.
Examiner l’architecture d’EF Core
Le diagramme suivant illustre l’architecture d’EF Core :
DbContext est une classe spéciale qui représente une unité de travail. DbContext
fournit des méthodes pour configurer les options, les chaînes de connexion, la journalisation et le modèle utilisé pour mapper votre domaine à la base de données.
Classes qui dérivent de DbContext
:
- Représentent une session active avec la base de données.
- Enregistrent et interrogent des instances d’entités.
- Incluent des propriétés de type
DbSet<T>
représentant les tables de la base de données.
Le fournisseur EF Core traduit les modifications du graphe des objets en SQL.
Le fournisseur de base de données :
- Est une bibliothèque de plug-ins conçue pour un moteur de base de données spécifique, comme SQL Server, Azure Cosmos DB ou PostgreSQL.
- Convertit les appels de méthode et les requêtes LINQ en dialecte SQL natif de la base de données.
- Étend EF Core pour activer des fonctionnalités qui sont propres au moteur de base de données.
Gérer des schémas de base de données
EF Core propose deux méthodes principales pour synchroniser votre modèle EF Core et le schéma de la base de données :
- Migrations (modèle comme source de vérité)
- Ingénierie à rebours (base de données comme source de vérité)
Pour choisir entre ces options, déterminez si votre modèle EF Core ou le schéma de la base de données est la source de vérité.
Migrations
Dans les projets réels, les modèles de données changent à mesure que les fonctionnalités de l’application sont implémentées. Tandis que de nouvelles entités sont ajoutées et supprimées, les schémas de base de données doivent être modifiés en conséquence. La fonctionnalité de migration EF Core permet de mettre à jour de manière incrémentielle le schéma de la base de données pour le synchroniser avec le modèle de données de l’application tout en conservant les données existantes dans la base de données.
Lors de l’introduction d’une modification de modèle de données, le développeur utilise des outils EF Core pour ajouter une migration correspondante. EF Core compare le modèle actuel à un instantané du modèle précédent pour déterminer les différences. Le code C# permettant d’implémenter les modifications est généré. Vous pouvez modifier les fichiers C# pour des comportements personnalisés ou pour alimenter en données. Les fichiers sont suivis dans le contrôle de source de votre projet comme n’importe quel autre fichier source.
Une fois générée, la nouvelle migration peut être appliquée à une base de données de différentes façons. EF Core enregistre toutes les migrations appliquées dans une table d’historique spéciale. La table d’historique conserve un enregistrement des migrations qui ont été appliquées.
Ingénierie à rebours
L’ingénierie à rebours est le processus de génération de modèles automatiques de classes de modèle d’entité et d’une classe DbContext
basée sur un schéma de base de données. Cette approche est souvent utilisée avec les bases de données existantes ou partagées qui sont gérées par un administrateur de base de données.
Dans la leçon suivante, vous commencerez à utiliser EF Core avec une migration.