Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Références des espaces de noms (Namespace)
Les premiers pas
Préface
Notes légal
Dictionnaire
Recherche

Les premiers pas

En tant qu'ORM, Entity Framework est un cadre d'application d'accès aux données fourni par Microsoft permettant d'établir une relation entre les objets et la structure de données dans l'application. Il est construit sur ADO.NET traditionnel et agit comme un enveloppe sur ADO.NET et constitue une amélioration par rapport à ADO.NET fournissant un accès aux données de manière plus automatisée, réduisant ainsi les efforts d'un développeur pour lutter contre les connexions, les lecteurs de données ou les ensembles de données. C'est une abstraction sur tous ces éléments et est plus puissant par rapport aux offres qu'il propose. Un développeur peut avoir plus de contrôle sur les données dont il a besoin, sous quelle forme et en quelle quantité. Entity Framework fournit une API fiable, afin que les développeurs de logiciels puissent se concentrer sur la résolution de leurs problèmes commerciaux, sans se soucier de résoudre les problèmes de persistance des données. Un développeur n'ayant aucune expérience en développement de base de données ou n'ayant pas une connaissance très approfondie des bases de données peut tirer parti des capacités d'Entity Framework et de LINQ pour écrire une requête optimisée afin d'effectuer des opérations de base de données. Comme il supprime un grand nombre d'affectations d'association d'informations répétitives, Entity Framework peut améliorer l'efficacité d'un développeur. Il permet également d'assurer la cohérence des tâches qu'il effectue, au lieu d'avoir différents collègues d'une même équipe ayant leurs propres méthodes d'accès aux données. Entity Framework, bien sûr, a sa propre courbe d'apprentissage, en particulier si vous avez besoin de le comprendre plus en profondeur pour tirer parti de ses fonctionnalités avancées, mais cette courbe d'apprentissage est rapide car la technologie est très intéressante. L'exécution des requêtes SQL ou DB serait gérée par Entity Framework en arrière-plan et il s'occuperait de toutes les transactions et des problèmes de concurrence pouvant survenir.

Le modèle relationnel et le modèle objet

La cartographie objet-relationnel est une stratégie vous donnant la possibilité d'interroger et de contrôler/manipuler des données à partir d'une base de données en utilisant un paradigme orienté objet. Par conséquent, dans votre code, vous pouvez découper des objets au lieu de composer directement des requêtes SQL. Les modèles relationnels et les modèles objet ne fonctionnent pas très bien ensemble. Une base de données relationnelle choisit le format tabulaire pour représenter les données et les langages orienté objet les représentent sous la forme d'un graphique interconnecté d'objets. C'est la bibliothèque ORM implémentant la technique de cartographie objet-relationnel, comme Entity Framework, qui s'en charge. Dans la plupart des scénarios de base, ces objets sont directement cartographiés aux tables de la base de données. Mais dans des applications plus grandes et des scénarios complexes, cette technique orienté objet permet d'implémenter des fonctionnalités orienté objet telles que l'héritage. Une classe Personne de base et une classe Employer héritant de la personne peuvent être cartographiées aux données entreposées dans la même table de la base de données. Ou une meilleure granularité sans héritage, une table dans une base de données peut se traduire par un ensemble distinct de classes dans un modèle orienté objet. Les entités avec lesquelles l'ORM travaille sont différentes d'une cartographie 1 sur 1 vers des tables.

L'historique d'Entity Framework

La plupart des programmes que nous créons utilisent des informations et nous devons les entreposer dans la base de données, et à certains moments récupérer les mêmes informations pour les montrer aux utilisateurs finaux, leur permettre d'accéder, de modifier ou d'ajouter de nouvelles données ou informations. Ces tâches sont généralement secondaires par rapport aux problèmes que nous essayons de résoudre lors de la création de programmes, mais pendant assez longtemps, nous avons investi des efforts étranges dans la composition de code juste pour obtenir des informations dans notre magasin de données ou mieux appelé une base de données. Au cours de ces années, Microsoft a également connu diverses mises en avant de l'obtention d'informations via des API. ActiveX Data Objects, ou ADO, a existé pendant un certain temps et a finalement évolué pour devenir ADO.NET, mais ADO ou ADO.NET nous obligeait toujours à être exceptionnellement associés à la création de connexions et de commandes pour convertir les résultats des requêtes de base de données en entités compréhensibles, en tenant compte de la création de nos bases de données, et ce n'est que la pointe de l'iceberg. En 2008, Microsoft a déplacé sa stratégie d'accès aux données vers un cartographieur objet-relationnel ayant une implication automatisée avec les bases de données relationnelles et permettant de traduire les objets vers et depuis les données brutes. Cela ne nécessite pas qu'un développeur ait une connaissance approfondie de la base de données ou de son schéma. Cette innovation a été baptisée Entity Framework et est devenue l'API d'accès aux données principale de Microsoft. Cette API a évolué au fil des ans, puis la version la plus stable, à savoir EF 6, est sortie, avec plus de 48 000 000 téléchargements. La version actuelle est la 6.2.0, qui compte 3 700 700 téléchargements et plus à ce jour. Jetons un coup d'oeil sur l'histoire d'Entity Framework.

Les avantages d'Entity Framework pour une Application

Bien qu'Entity Framework offre de nombreuses possibilités, dans des scénarios réels, dans quelle mesure peut-il être intégré dans des applications ? Prenons un scénario en temps réel. Supposons qu'une application Web ait été initialement écrite à l'aide d'ASP.NET traditionnel avec une approche ADO.NET d'accès aux données. Imaginez le type de problèmes auxquels elle peut être confrontée. Elle a un temps de développement pour maintenir les connexions et les commandes SQL, elle ne peut pas s'étendre à une nouvelle base de données en dehors de SQL, il y aurait un effort de développement supplémentaire pour transformer les données brutes en modèle ou entités souhaités, un développeur doit avoir une bonne connaissance de la base de données ainsi que connaître le schéma de la base de données, les objets de la base de données sont directement exposés dans le code, les opérations d'accès aux données seraient très étroitement couplées et spécifiques à la base de données utilisée, c'est-à-dire SQL. Désormais, en utilisant Entity Framework, tout cela pourrait être facilement réalisé dans une application, qu'il s'agisse d'une application de niveau entreprise ou d'une application de base. Par exemple, une entreprise avait un produit de niveau entreprise pour convertir des PDF en livres prenant en charge tous les formats de document et offrant également des fonctionnalités d'édition. Le produit a été écrit en ASP.NET avec ADO.NET. Leur exigence était de passer à l'échelle supérieure, ils ont donc choisi Entity Framework car il offrait également au logiciel la flexibilité d'écrire des microservices avec des bases de données indépendantes pour les services ayant leurs propres contextes. La base de données variait de SQL à MySQL à Oracle ou les trois bases de données pouvaient être utilisées en même temps avec Entity Framework, ce qui permettait d'avoir des contextes séparés et aucun changement de code du tout. Ces offres rendent Entity Framework plus fort.

L'Entity Framework pourrait donc également être utilisé dans les scénarios où, dans une application typique, l'interface utilisateur et le code d'accès aux données sont étroitement liés. C'est une perspective et pas le seul endroit où l'on peut utiliser Entity Framework. Il résout tous les problèmes limitant l'application ASP.NET typique avec l'application ADO.NET pour passer à l'échelle supérieure. L'Entity Framework facilite la manière de savoir quel objet de domaine fonctionnera dans un modèle. Cela pourrait être défini par un contexte séparé. Dans Entity Framework, cela s'appelle DbContext. Une application peut avoir plus d'un DbContext à utiliser indépendamment dans le grand logiciel selon les besoins. Il gère les objets, l'état et la relation des entités ainsi que la persistance des données. DbContext assume également la responsabilité de l'exécution de LINQ et du suivi des modifications en mémoire. Cela s'avère également être une abstraction d'Entity Framework à connaître directement par une application, ce qui n'est bien sûr pas du tout nécessaire.

L'architecture d'Entity Framework

L'image suivante montre l'architecture d'Entity Framework sur ADO.NET :



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mardi, le 31 octobre 2017