Explorez les différentes approches pour modéliser des entités dans Entity Framework

Entity Framework simplifie l'accès aux données dans votre application en vous permettant d'écrire du code pour effectuer des opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) sans avoir besoin d'interagir directement avec le fournisseur de base de données sous-jacent. Il existe trois approches pour modéliser vos entités dans Entity Framework: Code First, Model First et Database First. Cet article traite de ces trois approches et de leurs avantages et inconvénients.

Qu'est-ce que l'Entity Framework? Pourquoi tout ce battage médiatique?

Entity Framework de Microsoft est un ORM étendu qui vous aide à isoler le modèle objet de votre application du modèle de données. Il s'agit d'un framework ORM open source pour ADO.Net et est inclus dans le cadre de .Net Framework. En utilisant les outils ORM, vous pouvez vous concentrer sur la logique métier de l'application et stocker des données dans la base de données avec beaucoup moins de code. Vous pouvez profiter d'un ORM pour convertir des données entre des systèmes de types incompatibles - vous pouvez stocker vos objets de domaine dans la base de données sous-jacente sans avoir à vous soucier des subtilités internes sur la façon dont les données sont réellement stockées. L'Entity Framework est un ORM mature de Microsoft et peut être utilisé avec une grande variété de bases de données.

Dans les sections qui suivent, nous explorerons chacune des trois approches de modélisation d'entités à l'aide d'Entity Framework.

Code d'abord

L'approche Code First vous aide à créer les entités dans votre application en vous concentrant sur les exigences du domaine. En substance, vous pouvez suivre la conception pilotée par domaine (DDD) en utilisant cette approche. Une fois vos entités définies et les configurations spécifiées, vous pouvez créer la base de données à la volée en utilisant les deux. L'approche Code First vous donne plus de contrôle sur votre code - vous n'avez plus besoin de travailler avec du code généré automatiquement. J'aime cette approche car cela vous donne beaucoup de flexibilité et de contrôle. Si vous avez les classes de domaine prêtes, je préférerais toujours cette approche car vous pouvez facilement créer votre base de données à partir des classes de domaine.

L'inconvénient de cette approche est que toute modification du schéma de base de données sous-jacent serait perdue; dans cette approche, votre code définit et crée la base de données. L'approche Code First vous permet d'utiliser Entity Framework et de définir le modèle d'entité sans le concepteur ou les fichiers XML. Vous pouvez utiliser l'approche POCO (Plain Old CLR Objects) pour définir le modèle et générer votre base de données.

Dans cette approche, vous créez généralement les classes d'entité. Voici un exemple; une classe d'entité typique est donnée ci-dessous.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

Ensuite, vous devez définir un contexte de données personnalisé en étendant la classe DbContext comme indiqué ci-dessous.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

Enfin, vous devez spécifier la chaîne de connexion dans le fichier de configuration. Vous avez terminé!

La base de données d'abord

Vous pouvez utiliser l'approche Database First si la base de données est déjà conçue et prête. Dans cette approche, le modèle de données d'entité (EDM) est créé à partir de la base de données sous-jacente. Par exemple, vous utilisez la première approche de base de données lorsque vous générez les fichiers edmx dans l'IDE Visual Studio à partir de la base de données. Les modifications manuelles de la base de données sont possibles facilement et vous pouvez toujours mettre à jour l'EDM si nécessaire (par exemple, si le schéma de la base de données sous-jacente change). Pour ce faire, mettez simplement à jour l'EDM à partir de la base de données dans l'IDE de Visual Studio.

Modèle d'abord

Dans l'approche Model First, vous pouvez d'abord créer l'EDM, puis générer la base de données à partir de celui-ci. Vous créez généralement un EDM vide à l'aide de l'Assistant Modèle de données d'entité dans Visual Studio, définissez les entités et leurs relations dans Visual Studio, puis générez la base de données à partir de ce modèle défini. Vous pouvez facilement créer des entités et définir leurs relations et associations dans le concepteur de Visual Studio. Vous pouvez également spécifier la propriété Key et les types de données pour les propriétés de vos entités à l'aide du concepteur. Vous pouvez utiliser des classes partielles pour implémenter des fonctionnalités supplémentaires dans vos entités.

OK, mais quand devriez-vous utiliser l'approche Model First? Eh bien, si ni les classes de domaine ni la base de données ne sont prêtes et que vous préférez définir le modèle de données à l'aide d'un concepteur visuel, cette approche est pour vous. Cependant, comme dans l'approche Code First, dans l'approche Model First, les modifications manuelles de la base de données seraient perdues lorsque le modèle définit la base de données.