Catégories
.Net

Entity Framework intro

Dans cet article, je vais présenter l’ORM de Microsoft nommé Entity Framework.

 Entity Framework, ça sert à quoi ?

Entity Framework est un ORM (Object-relational mapping) permettant d’interagir avec une source de donnée de type base de données, en manipulant des objets directement (sans avoir à écrire du code SQL) grâce à un langage de requetage propre au .Net Framework qui est Linq (Language-Integrated Query).

les différents « modes » d’Entity Framework

Il existe 3 modes permettant de générer cette couche d’accès aux données:

  • Code First
  • Database First
  • Model First (deprecated)

mode EF Database First

Dans ce mode, nous utilisons EF pour nous générer des classes à partir d’une base de donnée existante. EF va nous générer via un assistant dans Visual Studio, des classes correspondant à nos tables de base de données et un « contexte » qui est la version « objet » de la base de donnée elle même.

mode EF Model First

Visual Studio (à partir de VS 2010) d’un outil graphique de modélisation de classes qui permettra à Entity Framework de générer la base de données correspondante (de facon presqu’invisible) d’un coté et de nous donner accès au « contexte » et « entités » de l’autre. (Abandonné par Microsoft)

mode Code First

le mode le plus intéressant pour nous autre développeurs, car il nous permet de simplement générer la base de données à partir de nos classes POCO (des classes toutes simple composés de Propriétés).

Pourquoi ce mode code first nous intéresse-t-il ?

  1. car il permet d’une part de nous soucier de notre code sans avoir à écrire de SQL ou configurer notre base de données à travers un outil
  2. nous gardons le contrôle de la structure de la base de donnée et il nous est possible de synchroniser le schéma grâce à notre code (ça se fait pas tout seul, mais il y a un mode de migration, nous y reviendront dans un autre post).
    Dans les 2 autres modes il faut modifier plusieurs éléments de l’architecture en cas de modif structurelles de la base.
  3. grâce aux Entity Framework Power Tools, il est possible de faire du reverse engineering en faisant générer les classes POCO depuis une base de donnée existante et d’utiliser EF en mode Code First ensuite ! C’est pas génial ça  🙂 ?

En tant que développeur ou architecte il vous faudra donc choisir entre ces 3 modes d’utilisations.

 Tests Unitaires

N’oublions pas que l’avantage de découper son projet en plusieurs « couches » est de facilité la maintenance du code (surtout en cas de migrations), et de rendre chaque couche plus facilement testable indépendamment des autres.

Lire les 2 articles suivants qui passent en revue les fonctionnalités d’EF6:

Pour finir, quelques liens indispensables

Les bases

Plus avancé

Technique

Mémo

Lorsqu’on utilise Code First pour générer la base de donnée par défaut (sans fournir d’infos à propos de la destination), la base de donnée créer pour le contexte se trouve, selon la base de données installée dans votre environnement :

  • dans la LocalDb (localdb)v11.0
  • ou dans SQL Express .SQLEXPRESS

liste des data annotations (attention aux namespaces que vous importez, cela dépend de la version d’EF… un exemple)