IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft dévoile ses plans pour Entity Framework Core 7, le framework d'accès aux données pour les applications .NET,
Elle prévoit de nombreuses améliorations

Le , par Bruno

200PARTAGES

5  0 
Entity Framework est un framework ORM (Object-Relational Mapping ) open source pour les applications .NET soutenu par Microsoft. Le 17 décembre, Arthur Vickers, Ingénieur responsable en charge de Entity Framework chez Microsoft a annoncé les stratégies de Microsoft pour Entity Framework Core 7 (EF7). Microsoft prévoit de travailler sur les fonctionnalités telles que : les colonnes JSON, le mappage des tables par type concret, le mappage des opérations CUD aux procédures stockées, les requêtes SQL brutes pour les types non mappés et bien d’autres fonctionnalités.

Rapelons que Entity Framework permet aux développeurs de travailler avec des données en utilisant des objets de classes spécifiques au domaine sans se concentrer sur les tables et les colonnes de la base de données sous-jacente où ces données sont stockées. Avec Entity Framework, les développeurs peuvent travailler à un niveau d'abstraction plus élevé lorsqu'ils traitent des données, et peuvent créer et maintenir des applications orientées données avec moins de code que les applications traditionnelles.


Microsoft indique que, Entity Framework Core 7.0 sera la prochaine version après EF Core 6.0 et sa sortie est actuellement prévue pour novembre 2022, en même temps que .NET 7 et il n'existe pas de plan pour une version EF Core 6.1. La version 7 de Entity Framework cible actuellement .NET 6. Il est possible qu'elle soit mise à jour vers .NET 7 à l'approche de sa sortie. La version 7 du framework ORM ne cible aucune version de .NET Standard ; pour plus d'informations, voir le futur de .NET Standard. EF7 ne fonctionnera pas sur .NET Framework. Voici, ci-dessous, les grandes fonctionnalités annoncées par l’équipe en charge de Entity Framework :

Colonnes JSON

Avec EF7, il sra possible d’enregistrer et interroger des documents JSON stockés dans des colonnes de bases de données relationnelles. Cette fonctionnalité introduira un mécanisme et des modèles communs pour le support JSON qui peuvent être implémentés par n'importe quel fournisseur de base de données. L’équipe en charge de Entity Framework travail avec la communauté .NET pour aligner les implémentations existantes pour Npgsql et Pomelo MySQL, et ajouterons également le support pour SQL Server et SQLite.

Mises à jour en masse

Il est question de faire des mises à jour efficaces, basées sur des prédictions, pour de nombreuses lignes de la base de données sans charger les données en mémoire.

Le monitoring des changements avec SaveChanges est le principal mécanisme d'EF Core pour insérer, mettre à jour et supprimer des entités. Ce mécanisme garantit que les opérations de la base de données sont ordonnées de manière à satisfaire les contraintes, et que les entités suivies sont synchronisées avec les modifications apportées à la base de données. Cependant, il nécessite un aller-retour de la base de données pour charger les entités en mémoire afin de créer les commandes de base de données appropriées, suivi d'un aller-retour de la base de données pour exécuter ces commandes.

En revanche, les mises à jour en masse, ou basées sur des ensembles, impliquent la définition des modifications à apporter à la base de données, puis l'exécution de ces modifications sans chargement préalable des entités en mémoire. Cette méthode peut être nettement plus rapide que les mises à jour par suivi, en particulier lorsque la même modification doit être appliquée à de nombreuses entités/lignes différentes.

Microsoft prévoit d'implémenter les mises à jour et les suppressions en masse (mais pas les insertions) Entity Framework 7. Notons que les mises à jour en masse ne sont pas les mêmes que les mises à jour par lots. EF Core combine déjà les modifications de nombreuses entités suivies en lots lors de l'envoi des mises à jour à la base de données via SaveChanges.

Mappage des tables par type concret

Pour mettre en correspondance les entités d'une hiérarchie avec des tables distinctes sans subir les pertes de performances du mappage TPT. EF Core supporte le mappage de type table par hiérarchie (TPH) et table par type (TPT) pour les hiérarchies d'héritage .NET. Le mappage de type table par type concret (TPC) est similaire au mappage TPT dans la mesure où chaque type d'entité de la hiérarchie est mappé sur une table de base de données différente.

Toutefois, alors que le mappage TPT fait correspondre les propriétés d'un type de base à des colonnes dans une table pour le type de base, le mappage TPC fait correspondre les propriétés du type de base à la même table que le type concret réel qui est mappé. Cela permet d'obtenir des performances beaucoup plus rapides, car il n'est pas nécessaire de joindre plusieurs tables lors de la recherche d'un type spécifique. Cela se fait au détriment de la dénormalisation des données, puisque les colonnes sont dupliquées dans les tables mappées à chaque type concret de la hiérarchie.

Mapper les opérations CUD aux procédures stockées

En fin d’utiliser des procédures stockées pour gérer les modifications de données, EF Core supporte déjà l'interrogation de données à partir de procédures stockées. Cette fonctionnalité permettra d'associer les insertions, mises à jour et suppressions générées par SaveChanges à des procédures stockées dans la base de données.

Requêtes SQL brutes pour les types non mappés

Les applications peuvent exécuter davantage de types de requêtes SQL brutes sans avoir à passer par ADO.NET ou à utiliser des bibliothèques tierces. Actuellement, les requêtes SQL brutes doivent retourner un type dans le modèle, avec ou sans clé définie. Dans EF7, Microsoft prevoit d'autoriser les requêtes SQL brutes qui retournent directement des types qui ne sont pas contenus dans le modèle EF. Le travail de l’équipe en charge de Entity Framework couvrira également les requêtes SQL brutes qui retournent des types simples/scalaires, tels que Guid, DateTime, int, et string.

SqlServer.Core

Pour des accès rapide et entièrement géré à SQL Server et Azure SQL pour les applications .NET modernes, le fournisseur de base de données ADO.NET complet pour SQL Server, Microsoft.Data.SqlClient, prend en charge un large éventail de fonctionnalités de SQL Server à la fois sur .NET Core et .NET Framework. Cependant, il s'agit également d'une base de code importante et ancienne, avec de nombreuses interactions complexes entre ses comportements. Il est donc difficile d'étudier les gains potentiels qui pourraient être réalisés en utilisant les nouvelles fonctionnalités de .NET Core. L'année dernière, Microsoft a lancé un projet, connu sous le nom de Woodstar, pour étudier le potentiel d'un pilote SQL Server très performant pour .NET. L’équipe prévoit d'investir davantage dans ce projet dans le cadre de l'EF7.

« L'investissement dans Microsoft.Data.SqlClient ne change pas. Il restera le moyen recommandé de se connecter à SQL Server et Azure SQL, avec ou sans EF Core. Il continuera à prendre en charge les nouvelles fonctionnalités de SQL Server au fur et à mesure de leur introduction », déclare Microsoft.

Expérience des migrations

EF Core 6.0 a introduit les migrations en masse, améliorant de manière significative l'expérience pour les applications cloud-natives et le déploiement de bases de données dans les systèmes d'intégration et de déploiement continus. Dans EF7, Microsoft prévoit d'apporter des améliorations supplémentaires dans ce domaine en fonction des commentaires des clients. Par exemple, elle prévoit de prendre en charge l'exécution de toutes les migrations en une seule transaction pour faciliter la récupération en cas de problème.

En outre, elle prévoit également d'améliorer l'expérience des développeurs qui commencent à effectuer des migrations. Cela inclut la possibilité de créer la base de données automatiquement lors de l'apprentissage ou du début d'un projet, puis de passer facilement aux migrations gérées au fur et à mesure que le projet mûrit. Par ailleurs, pour les projets disposant d'une base de données existante, elle prévoit de faciliter la création d'un modèle EF initial, puis de passer à la gestion de la base de données à l'aide de migrations.

Évolution de System.Linq.Expression

Dans le d’utiliser les fonctionnalités modernes du langage C# dans les requêtes LINQ, Microsoft effectue un travail en commun avec l'équipe Roslyn sur un plan permettant d'utiliser davantage de fonctionnalités C# dans les expressions LINQ. Il s'agit d'un travail en cours qui sera principalement suivi en dehors du repo EF Core.

Transactions distribuées

Les applications .NET Framework utilisant des transactions distribuées peuvent être portées vers .NET 7. La bibliothèque System.Transactions de .NET Framework contient du code natif qui utilise le coordinateur de transactions distribuées (DTC) de Windows pour prendre en charge les transactions distribuées. Ce code n'a jamais été porté vers .NET Core. Dans le cadre de .NET 7, charge de Entity Framework prévoit d'étudier et de commencer le processus d'introduction de cette fonctionnalité dans .NET moderne.

Au départ, cette fonctionnalité sera réservée à Windows et ne prendra en charge que les scénarios de base de données pour lesquels le fournisseur ADO.NET prend également en charge les transactions distribuées. Les autres utilisations des transactions distribuées, comme dans WCF, ne seront pas prises en charge dans .NET 7. En fonction du retour d'information et du coût, nous pourrons mettre en œuvre la prise en charge d'autres scénarios et/ou de plates-formes non Windows dans une version ultérieure.

Source : Microsoft

Et vous ?

Avez vous une expérience avec Entity Framework de Microsoft ? Que pensez-vous de ce ORM ?

Quelle amélioration attendez-vous le plus ?

Voir aussi :

Microsoft annonce la sortie de C# 10 dans le cadre de .NET 6 et Visual Studio 2022. C# 10 apporte des améliorations aux expressions lambda et plusieurs fonctionnalités

.NET 6 apporterait jusqu'à 40 % de gain de vitesse par rapport .NET 5, les tests de mise en cache et de boucles serrées serraient jusqu'à 30 % plus rapide

Microsoft présente les MAJ d'ASP.NET Core dans .NET, notamment le code C et C++ dans Blazor WebAssembly, la sortie de Visual Studio 2022 annoncée pour novembre

Microsoft annonce la sortie de la première release candidate de .NET 6, disponible pour Linux, macOS et Windows, elle résout les problèmes fonctionnels et les régressions des fonctionnalités

Une erreur dans cette actualité ? Signalez-nous-la !