web-dev-qa-db-fra.com

EntityFramework VS Ado.Net pur

EF est un personnel très utilisé mais je ne me rends pas compte de la manière dont je devrais l'utiliser. Ef a rencontré beaucoup de problèmes avec ef sur différents projets avec des approches différentes. Donc, quelques questions rassemblées dans ma tête. Et les réponses me conduisent à utiliser pur ado.net avec des procédures stockées. Donc les questions sont:

  1. Comment gérer EF dans les applications multiniveau? Par exemple, nous avons des DAL avec EF. J'ai vu beaucoup d'articles et de projets utilisant le référentiel, les motifs d'unité de travail comme une sorte d'abstraction pour EF. Je pense qu'une telle approche supprime la plupart des avantages qui augmentent la vitesse de développement et aboutit à peu de choses:
    • le remappage de la charge EF a pour résultat un DTO qui tue les performances (appelez select pour obtenir les données du tableau - première boucle, deuxième boucle - mappez les résultats sur un type composite généré par ef, next - mappez les données mappées avec linq et, enfin, mappez-les à certains DTO). Le remappage exact en DTO est l’un des plus gros avantages des efs;
      ou
    • conduit à une forte cohésion entre EF (et sa version version ) et l'application. Ce sera quelque chose comme application à 2 niveaux avec dal et présentation avec bll ou dal avec bll et présentation. Je suppose que ce n'est pas la meilleure pratique. Et le même processus de chargement que celui que nous avons précédemment, à l'exception du mappage, soulève donc à nouveau un problème de performances. Nous pourrions essayer d'utiliser EF comme DAL sans aucune abstraction. Mais nous aurons des problèmes similaires d'une autre manière. 
  2. Devrais-je utiliser un contexte par application\thread\atomique? L'utilisation de l'approche - un contexte par application\thread peut légèrement augmenter les performances et les possibilités d'appeler les propriétés de navigation, mais nous rencontrons un autre problème: la mise à jour de ce contexte et la croissance des données chargées dans le contexte. De plus, je ne suis pas sûr que l'accès simultané avec un dbcontext par application\fil. L'utilisation du contexte par opération nous amènera à remapper les résultats dans nos DTO. Vous voyez donc que nous avons de nouveau repoussé la question n ° 1.

  3. Pouvons-nous essayer d'utiliser uniquement les EF + SP? Encore une fois, nous avons des problèmes de questions précédentes. Quelle est la raison d'utiliser ef si la plus grande partie des fonctionnalités ne sera pas utilisée? 

Donc, oui, EF est génial pour démarrer un projet. C'est tellement pratique quand on a peu d'écrans et d'opérations crud. Mais ensuite? 

Tout ce texte est juste des pensées non triées. Je sais que pur ado.net entraînera un autre type de défi. Alors, quelle est votre opinion sur ce sujet?

27
Crossman

En suivant les conventions de dénomination, vous trouverez qu'il s'appelle: ADO.NET Entity Framework, ce qui signifie qu'Entity Framework repose sur ADO.NET, il ne peut donc pas être plus rapide. Il peut être exécuté à la fois, mais regardons EF fournit: 

  • Vous ne serez plus obligé d'écrire des requêtes sans savoir si ce que vous écrivez va être compilé ou non.
  • Cela vous oblige à utiliser C # ou votre langage .NET préféré pour écrire vos propres contraintes de données que vous souhaitez accepter de la part de l'utilisateur cible directement dans vos classes de modèle. 

Enfin: EF et LINQ donnent beaucoup de puissance pour la maintenance ultérieure de vos applications. 

Il existe trois modèles différents avec Entity Framework: Model First, Database First et Code First, apprenez à connaître chacun d'entre eux. 

-Le point sur la suppression des performances lorsque le remappage est en cours, c’est que lors de la première exécution, EF charge les métadonnées en mémoire, ce qui prend du temps car il crée une représentation en mémoire du modèle à partir du fichier edmx.

18
user2245758

ADO. Net est un framework orienté objet qui vous permet d’interagir avec un système de base de données (SQL, Oracle, etc.) . Entity framework est une technique de manipulation de données dans des bases de données telles que (collection de requêtes (nom de table inerte, select * from this this )) . il est utilise avec LINQ. 

0
Zeeshan Haider