Besoin de suggestion pour la migration peu de modules de l'application asp.net mvc 3: à l'heure actuelle, nous utilisons EF avec les classes POCO, mais à l'avenir, pour certains modules axés sur les performances, nous devons passer à ADO.NET ou à un autre outil ORM .NET).
Le problème auquel nous sommes confrontés à l'heure actuelle est le suivant: nos vues dépendent des classes Collection chargées via EF, quelle stratégie dois-je utiliser pour que ces classes d'entités soient chargées exactement comme par EF avec d'autres outils ADO.NET ou ORM? .
Ce que je veux, c'est être capable de basculer entre EF & ADO.NET avec un minimum de changement au niveau de la couche d'accès aux données, car je ne veux pas que mes vues soient prises en compte.
Vous devez utiliser le modèle de conception de référentiel pour masquer l'implémentation de votre couche d'accès aux données. Le référentiel renverra les mêmes POCO et aura les mêmes contrats d'exploitation, quelle que soit la couche d'accès aux données que vous utilisez sous le capot. Maintenant, cela fonctionne bien si vous utilisez des vrais POCO qui n'ont pas de méthodes virtuelles pour le chargement différé. Vous devrez explicitement gérer le chargement des collections dépendantes sur les entités pour que cela fonctionne.
Ce que j'ai vu jusqu'ici, une transition transparente d'un ORM / DAL à un autre est une illusion. Le schéma de dépôt suggéré par Kevin est une aide précieuse, un préalable même (+1). Mais néanmoins, chaque ORM a une empreinte dans la couche de domaine. Avec EF, vous utilisez probablement des propriétés virtuelles, peut-être des annotations de données ou, facilement oubliées, un cadre de validation qui s'intègre facilement (et en exclut d'autres). Vous pouvez compter sur la capacité d'EF à mapper les tables de jointure. Il y a peut-être des choses que vous ne voulez pas (mais que vous aimeriez faire) à cause de EF.
(Sans parler des outils qui exécutent un échafaudage au-dessus d'un contexte EF. Cela rendrait le verrouillage encore plus serré.)
Certaines choses que je pourrais faire dans votre situation (pardonnez-moi si je vous le dis)