El EF o cualquier otro ORM (es decir, NHibernate) no reemplaza su capa de acceso a datos. Más bien, el ORM es una capa de abstracción del DAL a la fuente de datos.
No se deje engañar por creer que el EF elimina el DAL. El EF es solo otro marco de fuente de datos. Sin embargo, en la práctica recomendada, aún desea abstraer y centralizar todo el acceso (lectura/escritura) en un DAL común.
Aquí hay un ejemplo perfecto de lo que estoy hablando. Supongamos que debe eliminar un usuario determinado en uno de sus casos de uso. Sin embargo, al eliminar al usuario, es posible que desee eliminar otros registros asociados al usuario eliminado para evitar registros huérfanos (para ser honesto, utilizaría un procedimiento almacenado para esto). Ahora este caso de uso está atascado en un BO que es muy específico para este caso de uso y eliminarlo ya que el usuario es solo una parte del caso de uso total.
En algún momento, tiene un desarrollador al que se le pide que incorpore un caso de uso diferente que involucra la eliminación de un usuario. El desarrollador puede hacer algunas cosas. 1) Podría crear un nuevo caso de uso que ahora implica eliminar un usuario, pero se olvidó de borrar los registros asociados a ese usuario. 2) Pudo haber notado el caso de uso anterior pero no pudo usarlo directamente sin generalizarlo para su caso de uso, por lo que decidió copiar parte de ese caso de uso que borra apropiadamente a un usuario y sus registros asociados, en su caso de uso . Ahora tenemos partes duplicadas del código que hacen prácticamente lo mismo: eliminar un usuario. ¡Yuk! Ahora, habiendo puesto este 'usuario eliminador' digamos un DAL.Clase de ayuda para usuarios, evitas esta mala práctica de diseño.
De todos modos, lo bueno de EF, reduce el número de entidades comerciales que solía crear manualmente y proporciona una vista diferente de los datos desde un nivel de aplicación que lo que se ve en el almacén de datos.
DAL de Stackoverflow: http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/ –